文章目录

  • python函数之参数
  • python的lambda表达式:
  • 函数工具:map,filter,reduce
>>> def f(a):a=99>>> b=88
>>> f(b)
>>> print(b)
88
>>> def ch(a,b):a=2b[0]='eoe'>>> x=1
>>> l=[1,2]
>>> ch(x,l)
>>> x,l
(1, ['eoe', 2])
>>> x=1
>>> a=x
>>> a=2
>>> print(x)
1
>>> l=[1,2]
>>> b=l
>>> b[0]='eoe'
>>> print(l)
['eoe', 2]
>>> l=[1,2]
>>> ch(x,l[:])
>>> l
[1, 2]
>>> l1=[2,3,4]
>>> l2=l1
>>> l1[0]=24
>>> l1,l2
([24, 3, 4], [24, 3, 4])
>>> l1=[2,3,4]
>>> l2=l1[:]
>>> l1[0]=24
>>> l1,l2
([24, 3, 4], [2, 3, 4])
>>> def ch(a,b):b=b[:]a=2b[0]='cho'>>> x=1
>>> l=[1,2]
>>> ch(x,l)
>>> l
[1, 2]
>>> x
1
>>> def f(a,b,c):print(a,b,c)>>> f(1,2,3)
1 2 3
>>> f(c=3,b=2,a=1)
1 2 3
>>> def f(a,b=2,c=3):print(a,b,c)>>> f(1)
1 2 3
>>> f(a=1)
1 2 3
>>> f(1,4)
1 4 3
>>> f(6,7,8)
6 7 8
>>> f(1,c=9)
1 2 9
>>> def f(*args):print(args)>>> f()
()
>>> f(1)
(1,)
>>> f(1,2,3,4)
(1, 2, 3, 4)
>>> def f(**args):print(args)>>> f()
{}
>>> f(a=1,b=2)
{'a': 1, 'b': 2}
>>> def f(a,*b,**c):print(a,b,c)>>> f(1,2,3,x=1,y=2)
1 (2, 3) {'x': 1, 'y': 2}
>>> def min1(*args):res=args[0]for arg in args[1:]:if arg < res:res=argreturn res>>> def min2(first,*res):for arg in res:if arg<first:first = argreturn first>>> def min3(*args):tmp=list(args)tmp.sort()return tmp[0]>>> print(min1(4,3,5,1))
1
>>> print(min2('a','b','c','d'))
a
>>> print(min3([1,2,3],[3,2],[1,4,5]))
[1, 2, 3]
>>> def minmax(test,*args):res=args[0]for arg in args[1:]:if test(arg,res):res=argreturn res>>> def less(x,y):return x<y>>> def great(x,y):return x>y>>> print(minmax(less,1,3,2,4,6,7,5))
1
>>> print(minmax(great,1,3,2,4,6,7,5))
7
>>> def intersect(*args):res=[]for x in args[0]:for other in args[1:]:if x not in other:breakelse:res.append(x)return res>>> def union(*args):res=[]for seq in args:for x in seq:if not x in res:res.append(x)return res>>> s1,s2,s3='aaa','bbb','ccc'
>>> s1,s2,s3='aabbcdf','bcfff','aadsxxs'
>>> intersect(s1,s2),union(s1,s2)
(['b', 'b', 'c', 'f'], ['a', 'b', 'c', 'd', 'f'])
>>> intersect([1,2,3,4,5],(1,2,9,8))
[1, 2]
>>> intersect(s1,s2,s3)
[]
>>> union(s1,s2,s3)
['a', 'b', 'c', 'd', 'f', 's', 'x']
>>> def func(x,y,z):return x+y+z>>> func(2,3,4)
9
>>> f=lambda x,y,z:x+y+z
>>>
>>> f(2,3,4)
9
>>> x=(lambda a='aad',b='bbc',c='ccc':a+b+c)
>>> x('ddd')
'dddbbcccc'
>>> def kk():t='ook'ac=(lambda x : t+' '+x)return ac>>> a=kk()
>>> a('ioi')
'ook ioi'
>>> L=[lambda x : x**2,lambda x : x**3,lambda x : x**4]
>>> for f in L:print(f(2))4
8
16
>>> print(L[0](3))
9
>>> def f1(x):return x**2>>> def f2(x):return x**3>>> def f3(x):return x**4>>> L=[f1,f2,f3]
>>> for f in L:print(f(2))4
8
16
>>> print(L[0](3))
9
>>> key = 'qq'
>>> {'aa':(lambda:2+1),'bb':(lambda:2*2),'qq':(lambda:2*3)}[key]()
6
>>> def f1():return 2+2>>> def f1():return 2+1>>> def f2():return 2*2>>> def f3():return 2*3>>> key='qq'
>>> {'aa':f1,'bb':f2,'qq':f3}[key]()
6
>>> def ac(x):return (lambda y:x+y)>>> act=ac(1)
>>> act(2)
3
>>> ac=(lambda x :(lambda y : x+y))
>>> a=ac(1)
>>> a(2)
3
>>> com=[1,2,3,4]
>>> da=[]
>>> for x in com:da.append(x+10)>>> da
[11, 12, 13, 14]
>>> def inc(x):return x+10>>> list(map(inc,com))
[11, 12, 13, 14]
>>> list(map((lambda x :x+10),com))
[11, 12, 13, 14]
>>> def mymap(func,se):res=[]for x in se:res.append(func(x))return res>>> list(map(inc,[1,2,3]))
[11, 12, 13]
>>> mymap(inc,[1,2,3])
[11, 12, 13]
>>> list(map(pow,[1,2,3],[2,3,4]))
[1, 8, 81]
>>> list(range(-5,5))
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
>>> list(filter((lambda x : x>0),range(-5,5)))
[1, 2, 3, 4]
>>> re=[]
>>> for x in range(-5,5):if x >0:re.append(x)>>> re
[1, 2, 3, 4]
>>> from functools import reduce
>>> reduce((lambda x,y:x+y),[1,2,3,4])
10
>>> reduce((lambda x,y:x*y),[1,2,3,4])
24
>>> L=[1,2,3,4]
>>> re=L[0]
>>> for x in L[1:]:re=re+x>>> re
10

python函数之参数

1.参数共享和引用:

函数中对可变对象参数在原处修改能够影响调用者(列表,字典),但是对于不可变对象,将其赋值给一个参数,在函数内修改这个参数,对于这个对象本身没有影响。

2.避免可变参数修改:

python中,默认通过引用(引用)进行函数的参数传递。

如果是赋值语句:L1=[1,2,3] L2=L1 那么此时L2和L1引用了相同的对象。此时改变L1,L2也会跟着改变。

但如果是通过拷贝对象,而不是创建相同的引用,此时对L1的修改,不会影响L2的值。因为L2引用的是L1所引用对象的一个拷贝。

L1=[1,2,3] L2=L1[:]

因此,由上述可看出,我们在函数中避免可变参数修改有两种方法:

第一个就是在调用时对列表进行拷贝,另外一个就是直接在函数内部加一个拷贝语句。

4.python中的赋值:

等号左边是变量名,右边是对象,他们之间是通过引用进行联系的。

对于不可变对象来说,给一个变量赋一个新的值,并不是替换了原始对象,而是让这个变量去引用完全不同的一个对象。对一个变量赋值,仅仅会影响那个被赋值的变量。

a=3 b=a a='oo’此时输出b,仍然是3

4.关键字参数:

如果没有特殊的匹配语法,python默认通过位置从左到右匹配变量名。

如果有关键字参数,那么通过变量名进行匹配,而不是通过位置(参数从左至右的关系不再重要)。关键字参数起到了数据标签的作用,可读性增加

5.默认参数:

默认参数允许创建函数可选的参数。如果没有传入值的话,在函数运行前,参数就被赋了默认值。

6.接收任意数目参数:

有两个,第一个是*:将所有位置相关的参数收集到一个新元组里。

另一个是**:只对关键字参数有效,将关键字参数传递给一个新的字典里。

7.函数也能作为参数对象传入另一个函数。

python的lambda表达式:

1.lambda返回一个函数,lambda是一种生成函数对象的表达式,不是一个语句。只能在里面封装有限的逻辑。但是def则是在头部将一个新的函数赋值给一个变量名,而不是将这个函数作为结果返回。

2.默认参数也能够在lambda参数中使用。lambda主体中的代码遵循LEGB法则。

3.lambda表达式能够在使用的代码内嵌入一个函数的定义,使代码结构更为简洁。而且如果再利用字典,通过键索引来取回一个函数,相比if语句更为简洁。从而使字典成为多路分支工具

4.lambda出现在def中,在上层函数调用时候,嵌套的lambda能够获取上层函数作用域中变量名x的值。而且lambda也能够获取任意上层lambda中变量名。

函数工具:map,filter,reduce

1.map函数:对一个序列对象中每个元素应用被传入的函数,返回一个包含所有函数返回结果的一个列表。map想要一个函数传进来,这时候lambda表达式就可以写进去了。而且map里面还能够以多个序列作为参数,返回一个结果列表,每个序列中的元素分别对应函数的一个个参数。

2.filter函数:基于某一测试函数过滤出一些元素。

3.reduce函数:返回一个单一的结果,每个元素都运行函数,一般用于迭加或迭乘。

python函数:函数参数,常用函数工具相关推荐

  1. Python中random模块常用函数/方法(2)——random.random(),random.randint()和random.uniform()

    1.random.random():生成一个0到1的随机符点数: 0 <= n < 1.0 语法:random.random() #生成一个0~1之间的随机浮点数 print(" ...

  2. (numpy)python中Array的常用函数

    python中Array的常用函数 1.unique 2.sum 3.max 1.unique a = np.random.randint(10, size=20).reshape(4,5) a &g ...

  3. erlang精要(19)-以函数作为参数的函数,返回函数的函数(2)

    下面以一个综合例子来整合前一节的内容: 以函数作为参数的函数 返回函数的函数 例子功能是完成求第一个参数列表能全部被第二个参数列表整除的元素. -module(learnerl). -export([ ...

  4. erlang精要(18)-以函数作为参数的函数,返回函数的函数(1)

    以函数作为参数的函数: 下面以Is_odd函数作为参数调用map和filter 1> Is_odd =fun(X) -> (X rem 2) =:= 1 end. #Fun<erl_ ...

  5. 函数的参数和函数的值

    函数的参数和函数的值 形式参数和实际参数 函数的返回值 形式参数和实际参数 函数的参数分为形参和实参两种.形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用.实参出现在主调函数中,进 ...

  6. C++函数默认参数(函数传入实参个数比形参个数少)

    C++函数默认参数 定义 参数添加顺序 注意事项 转载链接 定义     在C++中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的 ...

  7. python安装扩展库常用的工具是什么和conda_python习题01——董付国学习系列

    一.简答题 1.python程序的__name__的作用是什么? 每一个python程序都有一个__name__变量,用来表示程序的运行方式,当作为模块导入时,__name__变量的值等于程序文件名, ...

  8. 1. python 字符串简介与常用函数

    1. python中的字符串简介与常用函数 在python中,字符串变成了一个强大的处理工具集,他是不可变的,也就是说字符串包含字符与字符的顺序,他不可以原处修改 字符串是我们后面需要学习的稍大一点的 ...

  9. Python基础第六天——函数的使用、函数的参数、函数的返回值、函数的嵌套、命名空间、作用域、函数对象...

    一.拾遗 1.通常情况下无参函数只是进行操作,所以不需要返回值:有参数函数则需要返回值. 2.练习: 判断用户输入一串字符,如果这串字符的长度小于5则重新输入,如果大于5则退出循环. while Tr ...

  10. 菜鸟教程python正则表达式_Python正则表达式常用函数菜鸟教程

    这篇文章主要为大家详细介绍了Python正则表达式常用函数菜鸟教程,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! Py ...

最新文章

  1. MPB:农科院牧医所赵圣国组-基于GraftM对功能基因进行物种注释
  2. 【干货分享】流程DEMO-外出申请
  3. 人工智能写散文之错位时空
  4. Linux平台下 vimrc配置(转网友:http://blog.csdn.net/wooin/article/details/1887737)
  5. GDIPlus灰度化图像
  6. 万能无线鼠标对码软件_400元就能买ROG无线游戏鼠标,ROG影刃2无线版使用体验...
  7. windows上配置nginx php,Windows下配置Nginx使之支持PHP
  8. 计算机硬件能够直接识别的语言是英语,计算机硬件能直接识别、执行的语言是()...
  9. Android的性能优化
  10. 【C语言】- 关机小程序
  11. 破解Root密码_wuli大世界_新浪博客
  12. 逆向分析学习入门教程
  13. centos7安装Mysql8.0步骤
  14. 手把手教你Linux内核编译(三天吐血经历)
  15. 我们的指纹是如何形成的,科学家找到主导指纹形成原因
  16. 制作一个小黄鸭转圈跳舞的页面。
  17. 硬件结构框架_北桥_带宽
  18. vue 定时刷新按钮控制
  19. JVM:如何查看并设置jvm参数+jinfo+查看详细的jvm参数java-XX
  20. 剧本杀游戏app开发

热门文章

  1. linux 使用systemctl 设置java进程开机启动,管理springboot开机进程
  2. Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能
  3. linux 日记函数,每日记一些php函数,jQuery函数和linux命令(一)
  4. matlab启动不了jvm,MATLAB ::在-nojvm启动选项下不再支持此功能
  5. Win11任务栏颜色如何更改 Win11更改任务栏颜色教程
  6. win7系统如何提高电脑运行速度
  7. PP视频怎么设置文件的缓存路径
  8. 正则基本知识和常用正则
  9. oracle server process,Oracle体系结构及备份(四)server-process
  10. python教程下载百度云盘到手机_Python教程百度云盘哪里找