前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习笔记-小甲鱼Python3学习第十八

学习笔记-小甲鱼Python3学习第十八

作者头像
py3study
发布2020-01-03 13:06:41
5480
发布2020-01-03 13:06:41
举报
文章被收录于专栏:python3

形参和实参

>>>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次.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档