当大量的代码重复使用的时候,可以使用函数

函数的作用:提升了代码的简洁性、对功能 代码进行封装,提升了代码的重用性以及可可读性

例如定义一个函数:

def show()
```

def 这个关键字,python解释器遇到这一行就默认不执行,只是把这个函数放在内容里面,名字就是函数名show。只用调用的时候才执行。

show()-->调用函数
f = show #将show赋值给f,f的指向的地址和show相同,所以可以直接调用f来执行show函数
f() <==>show()

函数的返回值:

return;

注意:

1.如果函数中没有注明return,函数依旧有返回值,返回值为None

2.函数中遇到return,就自动终止函数,不执行return后面的代码语句

函数的参数:

形式参数与实际参数

形式参数:定义函数的时候定义的参数;def show(user):#user就是形式参数

实际参数:执行函数的时候传入的实际参数,show(‘jam’)#jam就是实际参数,对应的是定义函数时候的user

1.函数的普通参数

#一个参数:def show(arg):--->show('ss')

#两个参数:def show(arg,xxx):--->show('ss','c')

2.函数的默认参数

默认参数必须放在背后

def show(arg,arg2=None):

3.函数的动态参数

带一个*的,接收参数返回元组的类型

带两个*的,接受参数返回字典的类型

def show(*args,**kwargs):接收什么都能执行。注意:*的参数必须放在前面,**的参数放在后面。实参传入方式也一样

def show(*args,**kwargs):
print (args,type(args))
print (kwargs,type(kwargs))
show(11,22,3,n1 = 15,n2='adf')
(11, 22, 3) 
{'n1': 15, 'n2': 'adf'}

如果想要列表和字典分别传入,前面加*,必然后默认为*args传入的参数。

def show(*args,**kwargs):
print (args,type(args))
print (kwargs,type(kwargs))
l = [11,33,44]
d = {'n1':1,'n2':26}
show(l,d)
show(*l,**d)

案例:使用动态参数进行字符串的格式化

format()方法

s1 = '{0} and {1}'
l = ['jam','nina']
#result = s1.format('jam','nina')
result = s1.format(*l)
print(result)

输出:jam and nina

s2 = '{name} is {sex}'
d ={'name':'jam','sex':'m'}
#re1 = s2.format(name='jam',sex='M')
re1 = s2.format(**d)
print (re1)

输出:jam is m

简单函数:lambda表达式

对于简单的函数一行代码就可以执行

例:

func = lambda a:a+1

print (func(99))

输出:100

lambda表达式执行了那些内容:

1.创建形式参数a

2.自动把函数体结果return。

python内置函数

map与filter:

1.map:遍历序列,对序列中的每个元素进行操作,最终获取新的序列

例:li = [11,22,33,44]#让里面的每个元素都加100

new_li = map(lambda x:x+100,li)
l = list(new_li)
2.filter:

对于序列中元素进行筛选,然后获取符合条件的序列

例:

def func(i):
if i>33:
return True
else:
return False
li = [11,22,33,44,55,66]
filter(func,li)#不需要加括号执行

open函数

注意:

seek方法是寻找文件的指针位置

tell方法是 返回指针的位置。

tell和seek是按照字节的形式来执行的

read是按照字符的形式来执行的。