第十天
内容回顾
- 面试相关
- py2/py3区别
- 1 or 8 and 9
- 字符串的反转
- is 和 = 的区别
- git流程
- (1,)/1区别
- 线上的操作系统linux的centos
- 列举数据类型的方法
- 深浅拷贝
- 文件操作,如何读取大文件内容
- 一行写九九乘法表
- 函数的基本结构
def 函数名(参数)
函数体
return 返回值(默认为None)
- 参数
- 作业
- 三元运算
- 斐波那契数列:列表最后两个值之和添加到列表最后
参数
- 任意个数、任意类型
- 位置传参(调用函数根据参数位置传递参数)
- 关键字传参(调用函数根据关键字传递参数)
- 位置传参和关键子传参可以混合使用,保证位置参数在关键字参数之前,并且参数总数与函数参数相同
- 默认参数
- 在定义时,设置默认数
- 可传,传则使用传值;可不传,不传则使用默认值
- 万能参数*(参数形成元组)
def func(*args)
print(args)
func(1,2,3)
func((1,2,3))
func(*(1,2,3))
- 只能用位置传参
- 在*args后的参数只能用关键字传参
- 万能参数**(参数形成字典)
- 会传递不同个数的参数形成字典
- 只能用关键字参数,关键字为key,值为value
def func(**kwargs)
print(kwargs)
func(k1=1,k2=2)
func(**{'k1': 1, 'k2': 2})
func(k1={'k1': 1, 'k2': 2},k2=2)
- 综合应用
def func(*args, **kwargs)
print(args, kwargs)
func(1,2,3,k1=1,k2=2)
作用域
- 全局变量使用作用域
- 局部变量使用作用域
- 一个函数中
- 先创建,后使用
- 执行函数
- 可以使用全局作用域(执行函数前定义的)中的变量
- 可以使用(执行函数前定义的)函数
- 优先在本作用域–>再到父级作用域–>最终到全局作用域
- 子作用域中只能读取和使用方法父级作用域中的变量,不能对父级作用域中的-变量重新赋值(默认)
- global可以强制在子作用域中对全局作用域变量重新赋值(如果嵌套,仍然给全局变量重新赋值)
- nonlocal可以强制在子作用域中对父级作用域变量重新赋值
作业
- 写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回。
def func(*args):
summation = 0
for i in args:
summation += i
return summation
print(func(1, 1, 1, 1, 1))
- 看代码写结果
def func():
return 1,2,3
val = func()
print( type(val) == tuple )
print( type(val) == list )
- 看代码写结果
def func(*args,**kwargs):
pass
func(1,2,3,4)
func([1,2,3,4],[11,22,33])
func([11,22],33,k1=v1,k2=v2)
- 看代码写结果
def func(name,age=19,email='123@qq.com'):
pass
'alex' 19 '123@qq.com'
'alex' 20 '123@qq.com'
'alex' 20 30
'alex' 19 '123@qq.com'
'alex' 99 'x@qq.com'
报错
报错
- 看代码写结果
def func(users,name):
users.append(name)
return users
result = func(['武沛齐','李杰'],'alex')
print(result)
- 看代码写结果
def func(v1):
return v1* 2
def bar(arg):
return "%s 是什么玩意?" %(arg,)
val = func('你')
data = bar(val)
print(data)
- 看代码写结果
def func(v1):
return v1* 2
def bar(arg):
msg = "%s 是什么玩意?" %(arg,)
print(msg)
val = func('你')
data = bar(val)
print(data)
- 看代码写结果
v1 = '武沛齐'
def func():
print(v1)
func()
v1 = '老男人'
func()
- 看代码写结果
v1 = '武沛齐'
def func():
v1 = '景女神'
def inner():
print(v1)
v1 = '肖大侠'
inner()
func()
v1 = '老男人'
func()
- 看代码写结果
def func():
data = 2*2
return data
new_name = func
val = new_name()
print(val)
- 看代码写结果
def func():
data = 2*2
return data
data_list = [func,func,func]
for item in data_list:
v = item()
print(v)
- 看代码写结果
def func(arg):
arg()
def show():
print('show函数')
func(show)