python函数:函数参数,常用函数工具

文章目录

        • 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函数:返回一个单一的结果,每个元素都运行函数,一般用于迭加或迭乘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gradient设置上下渐变_图解CSS: CSS渐变

CSS的渐变主要分布在 conic-gradient()和repeating-conic-gradient()两个属性。在CSS中&#xff0c;CSS的渐变相当于图像&#xff0c;我们可以使用线性渐变(linear-gradient()和repeating-linear-gradient())、径向渐变(radial-gradient()和repeating-radial-gradient())和锥形…

2021泗阳致远中学高考成绩查询,2021高考成绩什么时候发布?可通过哪些途径查询?...

3、安徽省高考成绩预计将于6月23日公布各批次录取分数线和高考成绩&#xff0c;考生可通过安徽省教育招生考试院自行查分&#xff1b;4、湖南高考成绩将于6月25日左右公布&#xff0c;本科不再分一二三批&#xff0c;考生可通过湖南教育政务网、湖南省普通高校招生考试考生综合…

python函数之作用域

python函数之作用域&#xff1a; >>> def times(x,y):return x*y>>> times(2,4) 8 >>> times(3.1,4) 12.4 >>> times(eop,4) eopeopeopeop >>> def inset(s1,s2):res[]for x in s1:if x in s2:res.append(x)return res>>&…

mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决

前言有的时候我们在查看数据库数据时&#xff0c;会看到乱码。实际上&#xff0c;无论何种数据库只要出现乱码问题&#xff0c;这大多是由于数据库字符集设定的问题。下面我们就介绍一下&#xff0c;数据库的字符集的设定及乱码问题的解决。mysql数据库的字符集直白的说&#x…

加强计算机网络应用,如何加强计算机网络管理技术创新应用

车煜铭摘要&#xff1a;在社会的发展当中&#xff0c;计算机网络被普遍运用&#xff0c;因此&#xff0c;令人们对计算机网络的依赖性越来越大。长久以来&#xff0c;大部分计算机用户渴望获得一个稳定的网络氛围。为了符合这一需求&#xff0c;计算机网络管理系统随之诞生。其…

python基本语句

文章目录1.赋值语句序列赋值语句&#xff1a;多目标赋值语句&#xff1a;增强赋值语句&#xff1a;表达式语句2.条件语句和循环语句if语句&#xff1a;while循环&#xff1a;for循环&#xff1a;range计数器zip函数enumerate函数1.赋值语句 >>> a1 >>> b2 &…

mysql 经典面试_这些MySQL经典面试题你要知道!

1、MySQL的复制原理以及流程(1)、复制基本原理流程1. 主&#xff1a;binlog线程——记录下所有改变了数据库数据的语句&#xff0c;放进master上的binlog中&#xff1b;2. 从&#xff1a;io线程——在使用start slave 之后&#xff0c;负责从master上拉取 binlog 内容&#xff…

html乱码框框,springmvc+font-awesome开发出的页面显示方框乱码的解决方法

在web.xml中配置如下&#xff1a;springorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:conf/spring-mvc.xml2spring/default*.cssdefault*.gifdefault*.jpgdefault*.pngdefault*.jpegdefault*.jsdefault*.svgdefault*.eotdefault*.woffdef…

1主5从mysql数据库_MySQL主从复制虽好,能完美解决数据库单点问题吗?

一、单个数据库服务器的缺点数据库服务器存在单点问题&#xff1b;数据库服务器资源无法满足增长的读写请求&#xff1b;高峰时数据库连接数经常超过上限。二、如何解决单点问题增加额外的数据库服务器&#xff0c;组建数据库集群&#xff1b;同一集群中的数据库服务器需要具有…

python基本对象类型

文章目录python对象类型1.数字2.字符串3.列表4.字典5.元组6.文件7.其他核心类型python对象类型 1.数字 例子 >>> 123222 345 >>> 1.5*399 598.5 >>> 2**10 1024 >>> 3.1415*2 6.283 >>> 9.99991 10.9999 >>> import …

html响应式五栏布局,HTML – 响应式2列CSS布局,包括固定宽度的侧边栏?

在任何地方找不到解决方案(我猜这一定是一个非常常见的问题).我正在创建一个带侧边栏的响应式设计,其中侧边栏需要具有200px的固定宽度并且具有未知高度.我怎样才能使主要内容区占据所有剩余的宽度,而不会有任何不当行为.最接近我的是以下内容,但问题在于侧边栏可以与页脚重叠.…

js语句连接mysql数据库_js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池...

var vue require(vue);引入vue的意思&#xff0c;commonjs的写法。node都是用require来载入模块的&#xff0c;可以看看webpackvue。require()可以调用模块。这不是就把vue模块命了个名吗&#xff1f;nodejs的写法&#xff0c;引入vue模块并命名为vue的意思。前端的东西&#…

(DFS)迷宫问题

题目&#xff1a; 从s到t,.意味着可以走&#xff0c;*意味着不能走&#xff0c;如果能走&#xff0c;输出路径&#xff0c;如果不能走&#xff0c;输出no。 输入&#xff1a; 5 6 ....S* .***.. .*..*. *.***. .T....输出&#xff1a; ....m* …

惠普z6计算机进不去桌面,HP Z6 桌面工作站 | HP® HK 惠普香港

Intel、Thunderbolt 及 Xeon 均為 Intel Corporation 於美國及/或其他國家或地區的商標。Microsoft 及 Windows 為 Microsoft Corporation 於美國及/或其他國家或地區的註冊商標或商標。NVIDIA 是 NVIDIA Corporation 在美國及其他國家或地區的商標及/或註冊商標。USB Type-C™…

mysql定义条件和处理_mysql sql存储过程条件定义与处理

一、条件定义DECLARE condition_name CONDITION FOR condition_valecondition_value:sqlstate[value] sqldata_value |mysql教程_error_code二、条件处理DECLARE htype HANDLER FOR cond_value[...] sp_statementhandtype_value:sqlstate [value] saltate_value|contentname|sq…

(DFS)跳马

题目&#xff1a; 马走日&#xff0c;不考虑别马脚&#xff0c;问马能否从S走到T&#xff0c;其中‘#’表示不能落下&#xff0c;‘.’表示能落下 输入&#xff1a; .#....#S# ..#.#.#.. ..##.#..# ......##. ...T..... ...#.#... ...#..... ...###... ......... .##......输…

长沙医学院学位计算机考试内容,湖南长沙医学院2017年9月计算机等级考试报名时间...

长沙医学院2017年下半年第49次全国计算机等级考试(以下简称NCRE)将于2017年9月23至25日举行。为做好本次考试报名及相关考务工作&#xff0c;现将有关事项通知如下&#xff1a;一、报名时间&#xff1a;2016年6月7日—2016年6月18日&#xff0c;逾期不接受任何理由的补报名。二…

(递推)常用递推式总结及实现

常用递推式 后面问题的解可以由前面问题的解递推而来&#xff0c;每一项都与前面若干项有一定关联。它是一种用若干步可以重复的简单运算来描述复杂问题的方法。 爬楼梯和兔子问题和斐波那契&#xff1a;f(n)f(n−1)f(n−2);f(1)1,f(2)1f(n)f(n-1)f(n-2) ; f(1)1,f(2)1 f(n)f…

mysql建表语句utf-8_mysql 创建utf-8数据集

之前数据库都是默认的‘latin1 ’&#xff0c;由于业务需求&#xff0c;需要把数据集修改为utf-8(1)创建一个新的数据库&#xff0c;并设置默认的格式为utf-8CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;(2) 将这个yourdbname 数据…

html读取servlet,简单html与servlet交互(HTML利用servlet读取txt)

1.usercheck.htmlhref"../lib/ligerUI/skins/Aqua/css/usertext.css" rel"stylesheet"type"text/css" />填写用户名/>id"verifyButton"/>>2.usertext.css.userClass {border: 1px solid red ;background-image:url(../../…