六. 语句与语法:函数 + 列表生成式

函数

在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。
return None可以简写为return。

def square_of_sum(L):
    sum = 0
    for item in L:
        sum += item ** 2
return sum

多返回值函数

在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

import math
def quadratic_equation(a, b, c):
    ra = (-b + math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
    rb = (-b - math.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
return ra,rb

默认参数

函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。
由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面

def greet(str="world"):
print('Hello,'+str+'.')

可变参数

可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数
Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

def average(*args):
    if len(args) == 0:
        return 0.0
    sum = 0.0
    for item in args:
        sum += item
return sum / len(args)

列表生成式

把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

print([x * (x+1) for x in range(1,100,2)])

条件过滤

只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

def toUppers(L):
return [s.upper() for s in L if isinstance(s,str)]

多层表达式

for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

翻译为循环

L = []
for m in 'ABC':
    for n in '123':
        L.append(m + n)

print [a * 100 + b * 10 + c for a in range(1,10) for b in range(10) for c in range(10) if a == c]
输出:[101, 111, 121, 131, 141, 151, 161, 171, 181,….

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值