当大量的代码重复使用的时候,可以使用函数
函数的作用:提升了代码的简洁性、对功能 代码进行封装,提升了代码的重用性以及可可读性
例如定义一个函数:
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) <class 'tuple'>
{'n1': 15, 'n2': 'adf'} <class 'dict'>
如果想要列表和字典分别传入,前面加*,必然后默认为*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是按照字符的形式来执行的。