Python基础(六)- 函数

调用其他函数的函数

一个函数可以调用其他函数。如果这样的话,当被调用的函数结束时(也就是,return语句之后或者被调用函数的最后一个语句执行完毕之后),控制流程返回到调用函数中调用发生之后的位置。

def main:
    firstPart()
    print(str(4)+”:from function main”)
def firstPart:
    print(str(1)+”:from function firstPart”)
    secondPart()
    print(str(3)+”:from function firstPart”)
def secondPart:
    print(str(2)+”:from function secondPart”)
main()

返回多个值的函数

函数可以返回任何类型的对象,不仅仅只有数字、字符串或布尔值。例如,函数可以返回一个元组。

列表解析

当我们想要对列表中的每个元素执行一个特定的函数时,一个常见的for循环可以完成这项工作。然而,更加简单的方式是使用列表解析。如果list1是一个列表,那么下面的语句创建了一个新列表list2,并将list1中的每个元素的f(item)放入列表中,f不是一个Python内建函数就是一个用户自定义函数。
list2 = [f(x) for x in list1]
例如:list1=[‘2’,’3’,’4’,’5’,’6’],则[int(x) for x in list1]会是列表[2,3,4,5,6],int函数会应用到list1中的每一个元素。
如果函数g定义如下:

def g(x):
    return (int(x)**2)

那么[g(x) for x in list1] 会是列表[4,9,16,25,36],
列表解析中的for子句能够可选的跟随一个if子句。
[g(x) for x in list1 if int(x) %2==1]会是一个过滤后的列表[9.25]
除了列表外,列表解析可以应用在其他对象上,如字符串、元组和由range函数产生的算术表达式

[ord(x) for x in ‘abc’]     [97,98,99]
[x** 0.5 for x in(4,-1,9) if x>=0]   [2.0,3.0]
[x**2 for x in range(3)]    [0,1,4]

默认值

一个函数的某些(或者全部)参数可以有默认值——当没有值传递给他们时而赋给的值。也就是说,如果函数调用时相应的实际参数忽略了,默认值就会赋值给形式参数。
定义有默认值函数的典型格式是:

def functionName(par1,par2,par3=value3,par4=value4)

重要提示:在函数的定义中,没有默认值的参数必须放在有默认值的参数前面。

按参数名传递

实际参数可以通过相应形式参数的名字传递给参数,而不是根据位置。这种向函数传递值的方法叫做关键字传值。
提示:按位置传递的实际参数必须要放在按关键字传递的实际参数的前面(形式参数也相似)

自定义排序

函数可以按照任何我们选定的标准进行元素的排序。例如:从一个字符串列表开始,我们可以按照它们各自的长度、最后一个字母。它们包含的元音字母、或许多其他的属性进行排序。

Lambda表达式

Lambda表达式是一行代码构成的微型函数,经常在需要一个简单函数的地方使用。它们计算一个表达式,但不能用来代替一个复杂的函数。
Lambda表达式具有下面的形式:
lambda par1,par2,…:expression.其中,表达式是要返回的值。

`list1.sort(key=lastCharacter)`

可以代替为:

list1.sort(key=lambda x: x[-1])
names=[‘Dennis Ritchie’,’Alan Kay’,’John Bachus’,’James Gosling’]
names.sort(key=lambda name:name.split()[-1])
nameString=’,’.join(names)
print(nameString)

sorted函数

sort方法改变了列表中所有元素的顺序,sorted函数则返回一个新的已排序的列表。
list2=sorted(list1)
sort方法和sorted函数都可以使用可选参数key和reverses。然而sort方法仅能在l;列表中使用,但sorted函数可以在列表、字符串和元组中使用。当在字符串中使用时,它会产生一个包含字符串中所有字符的已排序的列表。

list1=[‘white’,’blue’,’red’]
list2=sorted(list1)             [’blue’, ‘red’, white’]
list2=sorted(list1,reverse=True)         [‘white’,’blue’,’red’]
list2=sorted(list1,key=len)                [‘red’,’blue’,’ white’]
list2=sorted(‘spam’)                [‘a’,’m’,’p’,’s’]

注释:

一个函数中有两种类型的形式参数——位置相关的参数(非默认参数)和默认参数。默认参数具有param=defaultValue的形式,其中、defaultValue是一个字面值,但也可以说是表达式。位置相关的参数后面不能跟着一个符号和一个默认值。如果一个函数同时有两种类型的参数,位置相关的参数必须放在默认参数前面。

一个函数中有两种类型的实际参数——位置相关的参数(非关键字参数)和关键字参数。关键字参数具有param=value的形式,其中value是一个表达式。位置相关的参数仅包括一个表达式。如果一个函数同时有两种类型的参数,位置相关的参数必须放在关键字参数前面。位置相关的参数的顺序最为重要,而对于关键字参数而言,顺序并不重要。

对于列表解析而言,列表构造可能是更好的名字。由于lambda表达式是没有名字的函数,因此他们也经常称为匿名函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值