- 字符串,列表,元组是序列,支持切片但是字典不是序列,不支持切片 列表可以修改,元组是不可变得序列
- 函数就是最基本的一种代码抽象的方式,面对对象的一个封装
1.函数基础:具有独立功能的代码块组织为一个小模块,这就是函数
定义->调用
def 函数名():
代码块
代码的复用最大化以及最小化冗余代码
2.函数参数:
传参,调用,不定长参数
1.必选参数:形式参数:不占用内存地址
实参是调用函数时的参数
2.默认参数:是在定义参数时直接指定参数的值
默认参数必须放在定义函数最后![
3.可选参数:当参数的个数不确定时使用,比较灵活 接受的是一个元组类型
def getComputer(*args):
print(args) #返回的是一个元组
for item in args:
result+=item #累加和
print(result)
getCompoter(1,2,3,4,5,6)
4.关键字可变参数:
接受的是一个字典类型
#**来定义
#在函数体内,参数关键字是一个字典类型 key是一个字符串
def keyFunc(**kwargs):
print(kwargs)
dicA = {'name':'Chalie','age':35}
keyFunc(**dicA)
keyFunc(name='peter',age=35)
keyFunc() #传入一个空字典
#组合使用
'''可选参数必须放在关键字可选参数之前'''
def complexFunc(*args,**kwargs):
print(args)
print(kwargs)
complexFunc(1,2,3,4,name='Chalie') #元组传入第一个参数,字典传入到第二个参数
complexFunc(age=36)
3函数返回值:return
如果函数返回值有多个,最终会返回一个包含所有返回值的元组
在一个函数内可以有多个return,但是只能返回一个return
如果执行了return,意味着函数就执行完成推出了,return后面的代码语句将不会执行
def returnTuple():
return 1,2,3 #返回元组
#return {'name':'chaelie'} #返回字典
a = returnTuple()
print(a[1])
print(returnTuple())
4.函数的嵌套使用.
def fun1():
print("------------")
def fun2():
print('aaa')
fun1()
fun2()
函数分类:根据函数的返回值和函数的参数
1.有参数无返回值的
2.有参数有返回值的
3.无参数有返回值的
4.无参数无返回值的
#1 不确定n的长度
def sumNumber(*args):
sum1 = 0
for i in args: #args是一个元组
sum1 = sum1+i
return sum1
print(sumNumber(8,9,10))
#2
def findOdd(args):
list1 = []
count = 1
for item in args:
if count%2!=0:
list1.append(item)
count += 1
return list1
print(findOdd([1,2,3,4,5]))
#3
def searchDic(kwarg):
newdic = {}
for key,value in kwarg.items():
if len(value)>2:
newdic[key] = value[0:2]
else:
newdic[key] = value
return newdic
print(searchDic({'name':'Charlie','age':'20'}))
变量
1.局部变量:
不同的函数 可以定义相同的局部变量,但是各自用各自的,不会产生影响
局部变量的作用:为了临时的保存数据 需要在函数中定义来进行存储
如果在函数内部要想对全局变量进行修改的话,必须用global关键字进行声明
pro='计算机' #全局变量
def printInfo():
name='peter' #局部变量,在其他方法中不能被调用,只能在函数内部被使用
print('{}'.format(name))
pass
def TestMethod():
pass
2全局变量:
作用域是整个程序
当全局变量和局部变量同时出现时,局部变量优先使用
3.参数的可变类型和不可变类型
可变类型:如列表
不可变类型:正常参数
1.万物皆对象,在函数调用的时候,实参传递的就是对象的引用
匿名函数
#不需要名字,使用lambda关键字去创建函数,冒号的后面的表达式有且只有一个
#匿名函数自带return,return的结果就是表达式计算后的结果
lambda:参数1,参数2,....:表达式
M = lambda x,y:x+y
M(4,10)
age = 15
print('可以参军' if age > 18 else '继续上学')
rs = (lambda x,y:x if x> y else y)(16,12) #找最大值,可以直接调用