发布时间:2019-09-25 08:13:22编辑:auto阅读(2073)
形参和实参
>>>def MyFirstFunction(name):
'函数定义过程中的name是形参'
#因为它只是一个形式,表示占据一个参数位置
print('传递进来的' + name + '叫实参,因为它是具体的参数值')
>>> MyFirstFunction('张三')
'传递进来的'张三'叫实参,因为它是具体的参数值'
形式参数(parameter)
实际参数(argument)
函数文档:是对函数的说明
利用function.__doc__可以查看函数文档,或者使用help(function)来查看
>>> MyFirstFunction.__doc__
'函数定义过程中的name是形参'
>>> help(MyFirstFunction)
Help on function MyFirstFunction in module __main__:
MyFirstFunction(name)
函数定义过程中的name是形参
关键字参数:通过关键字=值的方式,将实参与形参关联映射,不需要考虑形参的顺序,顺序也可以改变,运行的结果不会发生改变
>>> def SaySome(name,words):
print(name + '->' + words)
>>> SaySome('张三','爱Python.') #严格按照顺序传递参数,打印正常
张三->爱Python.
>>> SaySome('爱Python.','张三') #不按照正常顺序传递参数,打印不出想要的结果
爱Python.->张三
>>> SaySome(words='爱Python.',name='张三') #以关键字=值的方式传递参数,顺序打乱,打印也不会出错
张三->爱Python.
默认参数:在定义函数的时候,指定形参的默认值,如果在调用函数时给函数提供了实参,Python将使用指定的实参值,否则,将自动调用形参的默认值。因此,如果给形参指定了默认值后,在调用时可以不用给它传值,使用默认值可以简化函数的调用。
>>> def SaySome(name='张三',words='爱Python.'): #给形参name和words指定默认值
print(name + '->' + words)
>>> SaySome() #不传递值给形参时,将打印默认值
张三->爱Python.
>>> SaySome('李四')
李四->爱Python.
>>> SaySome('李四','也爱Python.') #也可以传递新值,将打印传递的值
李四->也爱Python
收集参数:当不确定需要传入的值是多少时,在定义形参的时候,可以使用*args(列表),**kwargs(字典)来表示
>>> def Args(*args):
print('参数的长度是:',len(args))
print('第二个参数是:',args[1])
>>> Args(2,'张三','Say',5,10)
参数的长度是: 5
第二个参数是: 张三
-----------------------分隔符,哈哈哈-----------------
课后作业:
0.请问以下哪个是形参?哪个是实参?
>>> def MyFun(x):
return x**3
y=3
print(MyFun(y))
x是形参,y是实参
1.函数文档和直接用‘#’为函数写注释有什么不同?
为了使别人更好的理解你写的函数,不会打印出来,但会作为函数的一部分存储起来
查看函数文档的方式有
Function.__doc__ 或者 help(Function)
2.使用关键字参数,可以有效的避免什么问题的出现?
可以避免因为传递参数的顺序错误而导致输出错误
3.使用help(print)查看print()这个BIF有哪些默认参数?分别起什么作用?
4.默认参数和关键字参数表面最大的区别是什么?
默认参数是在参数定义的过程中,为形参指定初始值,当调用函数时,不传递实参,则默认使用初始值。
关键字参数就是在函数调用的时候,通过参数名=值的方式,不会因为参数的顺序而出错。
--------------------------分割线,哈哈哈--------------------------
动动手:
0.编写一个符合以下要求的函数:
a.计算打印所有参数的和乘以基数(base=3)的结果
b.如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。
def Sum(*args,base=3):
sum = 0
for i in args:
sum += i
if base == 3:
sum = sum * 3
print(sum)
>>> Sum(1,2,4,4,5,base=3)
48
>>> Sum(2,3,4,5,base=5)
14
1.寻找水仙花数:
题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。
>>> def hua():
for i in range(100,1000):
x = i // 100
y = (i % 100) // 10
z = i % 10
if i == (x**3 + y**3 + z**3):
print(i)
>>> hua()
153
370
371
407
2.编写一个函数findstr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为"You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.",子字符串为"im",函数执行后打印“子字母串在目标字符串中共出现3次”。
>>> def findstr():
desstr = input('请输入目标字符串:')
word = input('请输入子字符串:')
times = desstr.count(word)
print('子字符串在目标字符串中共出现%d次.'%times)
>>> findstr()
请输入目标字符串:You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.
请输入子字符串:im
子字符串在目标字符串中共出现3次.
上一篇: 码如其人,小老弟,你能写一手漂亮的Py
下一篇: 学习笔记-小甲鱼Python3学习第十四
48455
47340
38226
35466
29923
26629
25602
20549
20245
18669
67°
80°
184°
132°
151°
274°
341°
336°
311°
403°