1.推荐python 写法
def damage(skill1,skill2):
damage1 = skill1*3
damage2 = skill2*2 +10
return damage1,damage2
damages=damage(3,6)
print(type(damages))
print(damages[0],damages[1]) # 不推荐这样获取damage(3,6)的返回结果。
#推荐下面这样获取damage(3,6)的返回结果,方便代码维护阅读。
skill1_damage,skill2_damage = damage(3,6)
print('skill1_damage=',skill1_damage)
print('skill2_damage=',skill2_damage)
2.序列解包与链式赋值
d = 1,2,3,4,5
print(type(d))
print(d)
a,b,c,d,e = d
print(a,b,c,d,e)
3.关键字参数
def add(x,y):
print("x=",x)
print("y=",y)
result = x+y
return result
#可以指定参数顺序
result = add(y=3,x=2)
print('result=',result)
4.可变参数
一般表现形式为:函数形参前面带 * 号的。
demo1:
def demo(*param):
print(param)
print(type(param))
#demo(1,2,3,4,5,6)
#输出
#(1, 2, 3, 4, 5, 6) 会自动转化为元组的类型
#<class 'tuple'>
#demo((1,2,3,4,5,6)) 这样写会变成一个二维元组
a=(1,2,3,4,5,6)
demo(*a) #*a 的作用是解引用,相当于把 1,2,3,4,5,6,从元组中取出来。
demo2:
'''
param1是必须参数
param2是默认参数
param3是可变参数
'''
def demo(param1,*param,param2=2):
print(param1)
print(type(param1))
print(param)
print(type(param))
print(param2)
print(type(param2))
#demo('a',1,2,3,'param')
demo('a',1,2,3,param2='param') #注意和上面输出不一样
demo3:
def squsum(*param):
sum = 0
for i in param:
sum += i*i
print("sum=",sum)
squsum(1,2,3,4,5,6)
squsum(*[1,2,3])
demo4:
def city_temp(**param):
print(param)
print(type(param))
for key,value in param.items():
print(key,':',value)
#city_temp(beijing="32c",xiamen="23c",shanghai="31c")
#dict_a={'beijing': '32c', 'xiamen': '23c', 'shanghai': '31c'}
#city_temp(**dict_a)
city_temp() # 什么都不传入,则输出空字典
5.变量作用域
python 与C++,C不同的在于,在for循环外面,python是可以引用for循环里面的变量的。而在C/C++ 是不能的。因为在python中是没有快级别作用域的概念的,python中基本的作用域是函数级别的。