Python3.X中的函数
来源:互联网 发布:java replace '' 编辑:程序博客网 时间:2024/06/08 00:10
函数
当我们想要重复实现某一功能,又为了避免大量的copy相同代码段,就可以使用函数,将代码段进行封装,而后只需调用这个函数,就可以重复满足需求。Python已经提供了很多内置函数,例如:print()、max()等;但同时,我们也可以创建自己的函数。
如何定义函数
- def 关键字、函数名、包括形式参数的圆括号
- 缩进块中为函数体
- 函数体的第一行语句可以是可选性的 docstring 文档字符串
- return结束函数并返回值,不带表达式的 return 返回 None。
定义一个函数
def myPrint(n): print(n)
定义一个函数,包含斐波那契数列的方法
def fibonacci(n): r = [] a,b = 0,1 while b < n: r.append(b) a,b = b ,a+b return r
函数的参数
定义的函数可以包括一下四种参数类型。
- 必需参数
- 默认参数
- 可变参数
- 关键字参数
1、必需参数
如果在定义函数的时候,定义了一个函数参数,在调用函数的时候,就必需传入一个参数,且传入的数量必须和定义时相同。传入的参数会按照位置顺序,依次索引。
def power(num,n): x = num**n return x
调用函数传入对应参数
print(power(10,2))#输出结果100
调用函数时不传入参数或缺少参数,会返回一个错误。
print(power())print(power(10))TypeError: power() missing 2 required positional arguments: 'num' and 'n'
2、默认参数
为一个或多个参数指定默认值。在调用函数时,如果没有为默认参数传入值,函数会使用默认参数的默认值。
def power(num,n=2): x = num**n return xprint(power(10))#输出结果100
可以是多个默认值
def power(num=10 ,n=2): x = num**n return xprint(power())#输出结果100
注意事项:
- 设置默认参数时,默认参数要在必需参数后。
- 当默认值是可变对象时,后续调用过程中会累积(前面)传给它的参数,例如:list列表、dict字典等。
def add (a,l =[] ): l.append(a) return lprint(add('zero'))print(add(1))print(add('c'))#输出结果['zero']['zero', 1]['zero', 1, 'c']
如果我们不希望默认值变化,只需将默认值设定为不可变对象
def add (a,l = None ): if l is None: l=[] l.append(a) return lprint(add('zero'))print(add(1))print(add('c'))#输出结果['zero'][1]['c']
3、可变参数
也可以叫不定长参数,指传入的参数个数是可变的,可以是 0 到任意个,这些参数会包装在一个元组中。
def sums(*num): x = 0 for n in num: x = x + n return xprint(sums(1,1,2,3,5,8)))#输出结果20
如果已知一个list列表或元祖,想要传入函数中只需要变量名前加 * 即可
def l(*num): sum = 0 for n in num: sum = sum + n return sumlist = (1,1,2,3,5,8)print(l(*list))#输出结果20
4、关键字参数
而关键字参数允许你传入0个到任意个含参数名的参数,这些关键字参数会包装成为一个dict。
def function(**keyword): return keywordprint(function())#输出结果{}
def function(**keyword): return keywordprint(function(zero=0,one=1,two=2,three=3))#输出结果{'zero': 0, 'one': 1, 'two': 2, 'three': 3}
跟可变参数一样,关键字参数也可以把 dict 字典转化后传入,只需要在变量前加 ** 即可。
def signUp(userName,passWord,**other): print(userName,passWord,other) return userName, passWord, otherinfm = {'email':'xxx@xxx.com','phone':'182xxxxxx71'}signUp('username','123456',**infm)
我们可以通过 if 判断关键字参数中是否存在某个 key 值。
def signUp(userName,passWord,**other): if 'email' in other: print('Contact me') if 'age' in other: pass return userName, passWord,otherinfm = {'email' : 'xxx@xxx.com','phone': '182xxxxxx71'}print(signUp('username','123456',**infm))#输出结果Contact me('username', '123456', {'email': 'xxx@xxx.com', 'phone': '182xxxxxx71'})
*后面的参数,将被视为命名关键字参数,这里*仅作为分隔符。
def signUp(userName,passWord,*,email,phone): print(userName,passWord,email,phone) return userName, passWord, email, phonesignUp('username','123456',email = 'xxx@xxx.com',phone = '182xxxxxx71')#输出结果username 123456 xxx@xxx.com 182xxxxxx71
可变参数后面的参数也被认为是命名关键字参数。
def signUp(userName,passWord,*other,email,phone): print(userName,passWord,other,email,phone) return userName, passWord, other, email, phone
@注意:如果不使用*分隔符,Python将无法区分必需参数和命名关键字参数。
命名关键字参数也可以给定默认值,调用时将无需传入参数名。
def signUp(userName,passWord,*,email='xxx@xxx.com',phone): print(userName,passWord,email,phone) return userName, passWord, email, phonesignUp('username','123456',phone = '182xxxxxx71')#输出结果username 123456 xxx@xxx.com 182xxxxxx71
@注意:若命名关键字参数未指定默认值,调用时必须传入参数名,否则将报错。
小结
- Python函数参数可以混合使用。
- 参数定义顺序:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
- Python3.X中的函数
- Python3.x中的print()函数
- python2.x中函数在python3.x中的改动方法
- python2.x中函数在python3.x中的改动方法
- Python3.x 函数
- Python3.x 函数实例
- Python3.X中的循环
- Python3.X中的print
- Python3.x自定义比较函数
- Python3.x --- Print函数用法
- Python3.x自定义比较函数
- Python3.x字符串函数详解
- python3.x中的urllib模块
- python3.x中的urllib模块
- Python3.X中的异常处理
- Python3.X中的条件控制
- Python3中的sorted函数
- Python3中的input函数
- 关于VS与opencv安装配置过程中遇到的问题
- JQuery
- L1-005. 考试座位号
- 上拉电阻解决1036串口接收乱码问题
- leetcode 413. Arithmetic Slices
- Python3.X中的函数
- PHP深入学习
- 操作系统-文件系统
- 多线程下载以及断点续传
- servlet异常如何处理
- BZOJ 1221: [HNOI2001] 软件开发 费用流 多路增广
- Springmvc搭建简单测试demo
- PAT (Advanced Level) Practise 1010
- 排序算法常见面试题