设为首页 收藏本站
查看: 736|回复: 0

[经验分享] Python中的函数定义及参数

[复制链接]

尚未签到

发表于 2017-5-3 10:36:42 | 显示全部楼层 |阅读模式
1、函数必须先声明在使用,自定义函数采用关键字def,返回语句return,同时可以支持pass语句占位,标明函数为空函数:


#~ 函数



# 自定义求绝对值函数

def myAbs (x):

    if not isinstance(x, (int, float)):

        raise TypeError('Illigel argument.')

    if (x > 0):

        return x

    else:

        return -x



myAbs(1)



# 可以使用pass关键字,标明该函数什么事情也不做。主要用于函数占位

def passTest ():

    pass



print('passTest() : ', passTest())  # 输出结果:passTest() :  None





2、函数的默认参数:



默认参数必须在参数列表的最后定义,用于防止参数不匹配。当有多个默认参数,需要指定某一个默认参数的值时,可以带上参数的名称:


def power(x, n = 2):

    s = 1

    while n > 0:

        n = n - 1

        s = s * x

    return s



s = power(2, 3)

d = power(2)

print('s = %s, d = %d' % (s, d)) # 输出结果: s = 8, d = 4



# 多个默认参数

def add(name, age, sex, province = '四川', city = '成都'):

    print ('name = %s, age = %s, sex = %s, province = %s, city = %s' % (name, age, sex, province, city))



add('张三', 10, '男') # 输出结果:name = 张三, age = 10, sex = 男, province = 四川, city = 成都

add('李四', 9, "女", city = '广安') # 输出结果:name = 李四, age = 9, sex = 女, province = 四川, city = 广安








3、可变参数:



Python支持可变参数传递,采用前参数前边加一个星号(*)来标明参数类型是可变参数,可变参数实际上是采用tuple来接收参数信息,所以可以直接用for in循环遍历参数:


# 可变参数



# 定义求和参数

def sum(*number):

    res = 0

    for v in number:

        res += v;

    return res



print ('1 + 2 + 3 =', sum(1, 2, 3))

print ('1 + 2 =', sum(1, 2))

arg = [1, 2, 3, 4]

print ('1 + 2 + 3 + 4 =', sum(*arg))





4、关键字参数:



关键字参数用两个星号表示(**),内部自动组装成dict类型:


# 关键字参数



def reg(name, age, **other):

    print ('register infomation : name %s, age %s, other %s' % (name, age, other))

# 注意这里的province、city为参数名称,而不是普通字符串

reg('dendy', 20, province = 'sc', city = 'cd') # 输出:register infomation : name dendy, age 20, other {'city': 'cd', 'province': 'sc'}

arg = {'province' : 'sc', 'city' : 'cd'}

reg('lily', 18, **arg) # 输出:register infomation : name lily, age 18, other {'province': 'sc', 'city': 'cd'}





5、各种参数的混合使用:



必选参数、默认参数、可变参数和关键字参数4种参数都可以混合使用,注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数




# 各种参数类型混合使用



def show(a, b, *args, **kw):

    print ('%s, %s, %s, %s' % (a, b, args, kw))



show('haha', 'xixi', 'a', 'b', p1 = 'p1', p2 = 'p2') # 输出: haha, xixi, ('a', 'b'), {'p1': 'p1', 'p2': 'p2'}

arg = ('haha', 'xixi', 'a', 'b')

kw = {'p1' : 'p1', 'p2' : 'p2'} # 输出: haha, xixi, ('a', 'b'), {'p1': 'p1', 'p2': 'p2'}

show(*arg, **kw)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-372456-1-1.html 上篇帖子: A Byte of Python 下篇帖子: Python学习系列-字符串类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表