python函数

mac2022-06-30  26

函数

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

函数的关键字

def 定义函数return 返回值pass 什么都不做,占位符,比如现在还没有想到怎么写函数的代码,可以先放一个pass,让代码可以运行exit(1) 直接退出程序例如下面这些都是函数的写法: def add1(x, y): print(x + y) def add2(x, y): return x + y def hello(): pass

 函数的参数

如果在声明函数的时候声明了一个参数,在调用函数的时候也要传入一个参数:

def test1(str): print(str) test1("Hello,world")

在声明函数的时候,我们可以声明多个参数,单数传入参数的时候要按顺序传入:

def test2(name,age): print(name) print(age) # 要按声明的顺序传入参数 test2("yangjian",18) # 指定了关键字参数后,可以不按顺序传入参数 test2(age=18,name="yangjian")

在声明函数的时候可以指定传入参数的默认值:

def test3(name,age=18): print(name) print(age) test3(name="yangjian")

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。

*args tuple参数,对应赋值,传入的所有未命名的参数都会存放到*args,它是一个元组**kwargs dict参数,对应赋值,传入的未命名的参数都会存到**kwargs,它是一个字典 fun(*args, **kwargs) fun(1, 2, 3, 4, 5, a=10, b=40) args = (1, 2, 3, 4, 5) kwargs = dict(a=10, b=40)

匿名函数

所谓匿名函数就是我们不再使用形如def的格式去定义函数,而是用lambda来创建匿名函数。

lambda语法格式:lambda [arg1 [,arg2,.....argn]]:expression

def add(x, y): return x + y add = lambda x,y:x+y

高阶函数

对于高阶函数,我们用得比较多的是sorted(),对所有可迭代对象进行排序操作。

m = dict(a=1,c=10,b=20,d=15) for i in m.items(): # i 是一个元组 print(i) print(sorted(m.items(),key=lambda x:x[0])) # x[0]表示按key进行排序,x[1]表示按value进行排序# 排序后结果# [('a', 1), ('b', 20), ('c', 10), ('d', 15)]

列表生成式

[exp for val in collection if condition] print([x for x in range(1,5) if x%2 == 0]) # 打印1-5中的偶数 # [2, 4]

列表生成器

方法一:

(exp for val in collection if condition)

方法二:

def test(): for i in range(1,5): yield i m = test() # 返回的是一个生成器,需要使用for循环才能打印出结果 print(m) for j in m: print(j) # 返回结果如下: <generator object test at 0x00000000021CDA40> 1 2 3 4

练习

将/etc/passwd文件里面的额内容安装uid进行排序

import codecs def test(item): pass result = "" with codecs.open("passwd", "r") as f: result = sorted(f.readlines(), key=lambda item: int(item.split(":")[2])) # 读取每一行的内容,按:分隔,取第二段即uid,用sorted()进行排序 with codecs.open("sortPasswd", "w") as f: f.writelines(result)

 

转载于:https://www.cnblogs.com/yangjian319/p/8847276.html

最新回复(0)