python函数参数与文档
函数参数
1.位置参数
定义形式:
def func(p1, p2, ...): pass
实例:
#位置参数,调用时传入的实参必须与形参一一对应(包括个数与位置) def introduce(name, age): print("I am {0}, and I am {1} years old.".format(name, age)) introduce("zhangsan", 18)
运行结果:
I am zhangsan, and I am 18 years old.
2.关键字参数
定义形式与位置参数相同
实例:
#正确的调用方式 introduce(name="lisi", age=20) introduce(age=20, name="lisi") introduce("lisi", age=20)
运行结果:
I am lisi, and I am 20 years old. I am lisi, and I am 20 years old. I am lisi, and I am 20 years old.
ps. 函数定义形式都是一样的,只是在调用的时候传入实参的时候形式不同:
1)若实参的个数与位置和形参都一样,则可以不必声明对应的形参名称。
2)若传参时顺序不同或想给后面的默认参数传参,则必须声明实参传给了哪个形参。
3.默认参数
定义形式:
默认参数必须位于普通参数的后面
def func(p1, p2=v2, p3=v3, ...): func body
实例:
def introduce2(name, age, sex="boy", address="shanghai"): print("I am {0}, a {2}, and I am {1} years old, living in {3}".format(name, age, sex, address)) introduce2("zhangsan", 18) introduce2("zhangsan", 18, "girl") introduce2("zhangsan", 18, address="beijing") introduce2(sex="girl", name="zhangsan", age=18)
运行结果:
I am zhangsan, a boy, and I am 18 years old, living in shanghai I am zhangsan, a girl, and I am 18 years old, living in shanghai I am zhangsan, a boy, and I am 18 years old, living in beijing I am zhangsan, a girl, and I am 18 years old, living in shanghai
4.收集参数
当你不知道会有多少个参数传入进来的时候,可以使用收集参数将他们全部传入进来,也可以不传参。
1)普通收集参数
定义形式:
def func(*args): func body
实例:
def introduce3(*args): print(type(args)) print('Hello everyone, I am going to tell you something about myself') for i in args: print(i) print('位置收集参数'.center(50,"#")) introduce3() print('*'*30) introduce3("zhangsan", 18) print('*'*30) introduce3("zhangsan", 18, "boy")
运行结果:
######################位置收集参数###################### <class 'tuple'> Hello everyone, I am going to tell you something about myself ****************************** <class 'tuple'> Hello everyone, I am going to tell you something about myself zhangsan 18 ****************************** <class 'tuple'> Hello everyone, I am going to tell you something about myself zhangsan 18 boy
2)关键字收集参数
定义形式:
def func(**kwargs): func body
实例:
print('关键字收集参数'.center(50,"#")) def introduce4(**kwargs): print(type(kwargs)) for k,v in kwargs.items(): print(k,'-----',v) introduce4() print('*'*30) introduce4(name="lisi", age=18, sex="man", hobby="music")
运行结果:
#####################关键字收集参数###################### <class 'dict'> ****************************** <class 'dict'> name ----- lisi age ----- 18 sex ----- man hobby ----- music
5.解包参数
当你的普通参数位于一个列表中,或者关键字参数位于一个字典中,直接传入列表或字典只能代表一个参数,可以使用解包参数将它们的每一个元素传给不同的参数。
1)列表解包参数
定义形式:
调用函数时:func(*list)
实例:
print('列表解包参数'.center(50,"#")) zhangsan = ["zhangsan", 18, "boy"] introduce2(*zhangsan) print('*'*50) introduce3(*zhangsan)
运行结果:
######################列表解包参数###################### I am zhangsan, a boy, and I am 18 years old, living in shanghai ************************************************** <class 'tuple'> Hello everyone, I am going to tell you something about myself zhangsan 18 boy
2)字典解包参数
定义形式:
调用函数时:func(**dict)
实例:
print('字典解包参数'.center(50,"#")) lisi = { 'name':'zhangsan', 'age':18, 'sex':'man', 'hobby':'reading' } introduce4(**lisi)
运行结果:
######################字典解包参数###################### <class 'dict'> name ----- zhangsan age ----- 18 sex ----- man hobby ----- reading
6.参数的混合使用
定义与调用顺序:普通位置参数,普通收集参数,默认参数,关键字收集参数
实例:
def stu(name, age, *args, sex="boy", **kwargs): print('Hi guys, I am happy to tell you about myself, my name is {0}, a {2}, {1} years old'.format(name, sex, age)) for i in args: print(i) for k,v in kwargs.items(): print(k,'----',v) stu("zhangsan",18) print('*'*30) stu("lisi", 20, "girl") print('*'*30) stu("lilei", 18, 'shanghai', 'freshman', hobby="dancing", state="single")
运行结果:
Hi guys, I am happy to tell you about myself, my name is zhangsan, a 18, boy years old ****************************** Hi guys, I am happy to tell you about myself, my name is lisi, a 20, boy years old girl ****************************** Hi guys, I am happy to tell you about myself, my name is lilei, a 18, boy years old shanghai freshman hobby ---- dancing state ---- single
函数文档
定义形式:
def func(p1, p2, ...): ''' func document parameters statament return statament ''' func body
实例:
def stu(name, age, *args, sex="boy", **kwargs): ''' this is the func document, where you can get help message :param name: your name :param age: your age :param args: other info :param sex: your sex :param kwargs: other info :return: print the the screen return none ''' pass print(stu.__doc__) print('*'*30) help(stu)
运行结果:
this is the func document, where you can get help message
:param name: your name
:param age: your age
:param args: other info
:param sex: your sex
:param kwargs: other info
:return: print the the screen return none
******************************
Help on function stu in module __main__:
stu(name, age, *args, sex='boy', **kwargs)
this is the func document, where you can get help message
:param name: your name
:param age: your age
:param args: other info
:param sex: your sex
:param kwargs: other info
:return: print the the screen return none
浙公网安备 33010602011771号