Python中的函数
Posted 天行健君子自强不息
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的函数相关的知识,希望对你有一定的参考价值。
函数的格式
def 函数名(形参): 函数体 return 返回值
函数的返回值
return
-
结束函数体的执行,并且设定返回值
-
return后面不加入任何内容,默认返回None
-
不加return默认也是返回None
-
return可是返回多个值,多个值中间用逗号分隔;
示例
def test1(): for i in range(5): pass return ‘aaa‘,‘bbb‘ print(test1())
函数的参数
传递参数(实参)
-
是一个实实在在的参数,是占据内存地址的
-
传递参数是在调用函数的过程当中进行的
接收参数(形参)
-
是一种形式意义的参数
-
在定义时是不占据内存地址
-
接收参数是在定义函数的过程中进行的
-
形参可以没有、一个或者多个;多个形参之间用逗号分隔
位置参数
调用函数时根据函数定义的参数位置来传递参数
def print_hello(name, sex): sex_dict = {1: u‘先生‘, 2: u‘女士‘} print(‘hello %s %s, welcome to python world!‘ %(name, sex_dict.get(sex, u‘先生‘))) print_hello(‘tanggu‘, 1) # 两个参数的顺序必须一一对应,且少一个参数都不可以
关键字传参
用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。
def sum1(a, b): print(a, b) res = a + b return res # 正确示范 ret = sum1(1, 2) ret = sum1(a=1, b=2) ret = sum1(b=1 , a=2) # 错误示范 ret = sum1(1, a = 2) # 因为a同时接收了两个参数
默认参数
用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值
def classmate(name,sex=‘男‘): print(‘%s : %s‘%(name,sex))
动态参数(*args)
接收所有的位置参数
def sum(*args): n = 0 for i in args: n+=i return n print(sum(1,2,3,4))
接收的是按照位置传参的值,组织成一个元组
动态参数(**args)
接收所有的关键字传参
def func(**kwargs): print(kwargs) func(a = 1,b = 2,c =3) func(a = 1,b = 2) func(a = 1)
接受的是按照关键字传参的值,组织成一个字典
解包
*和**,也可以在函数调用的时候使用,称之为解包裹(unpacking)
1、*的解包方式
def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。 print(args) func(1,2,3,4,5) l = [1,2,3,4,5] func(*l) #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
2、**的解包方式
def func(**kwargs): print(kwargs) func(a=1,b=2) d = {‘a‘:1,‘b‘:2} #定义一个字典d func(**d)
总结
- 站在传参的角度上,参数的传递顺序是:位置传参 >> 关键字传参
- 站在形参的角度上,参数的设定顺序是:位置参数 >> 动态参数(*args) >> 默认参数 >> 动态参数(**args)
以上是关于Python中的函数的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段