8-1 认识函数
round(a,2)表示保留a的小数点前两位
round(a,3)表示保留a的小数点前三位
round()函数支持四舍五入
a = 1.12386
result = round(a,2)
print(result)
result1 = round(a,3)
print(result1)
用IDLE输入help(函数)就可以得到相关函数的讲解
help(round)
Help on built-in function round in module builtins:
round(...)
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
8-2 函数的定义及运行特点
函数定义def funcname(parameter_list):
pass
def add(x,y):
result = x + y
return result
def print1(code):
print(code)
a = add(1,2)
b = print1('python')
print(a,b)
运行结果为:
python(#这个是运行b = print1('python')时候打印出来的)
3 None(#因为print1函数没有return,所有输出结果为None)
8-3 如何让函数返回多个结果
定义R人物的两个技能的伤害值 R skill1 skill2def damage(skill1,skill2):
damage1 = skill1 3
damage2 = skill2 2 + 10
return damage1,damage2
damages = damage(3,6)
print(type(damages))
print(damages)
skill1_damage,skill2_damage = damage(3,6)
print(skill1_damage,skill2_damage)
8-4 序列解包与链式赋值
a = 1
b = 2
c = 3
a,b,c = 1,2,3
d = 1,2,3
print(type(d))
a,b,c = d #这个过程就叫做序列解包,不一定要写成a,b,c=[1,2,3]
前后元素个数要相等 当abc都为1时,也可以这么赋值:a = b = c = 1
8-5 必须参数与关键字参数
参数类型:
1.必须参数,调用时候必须给参数赋值
定义过程中 def add(x,y)中x,y为形式参数
调用过程中add(1,2)中1,2为实际参数
2.关键字参数
def add(x,y):
result = x + y
return result
c = add(y=3,x=2)
关键字参数可以明确实际参数具体赋值给了哪个形式参数
关键字参数为了提高代码的可读性
必须参数和关键字参数的区别在函数的调用上,不在函数的定义上
8-6 默认参数
def print_student_files(name,gender,age,college):
print('我叫' + name)
print('我今年' + str(age) + '岁')
print('我是' + gender + '生')
print('我在' + college + '上学')
print_student_files('解宁','女',21,'石油大学')
print('~~~~~~~~~~~')
def print_student_files(name,gender='女',age=21,college='石油大学'):
print('我叫' + name)
print('我今年' + str(age) + '岁')
print('我是' + gender + '生')
print('我在' + college + '上学')
print_student_files('解宁')
print_student_files('呼呼')
print_student_files('宝贝','男',16)
print_student_files('果果',age = 16) # 使用关键字参数可以不用按照形式参数的顺序调用
8-7 可变参数
def demo(*param):
print(param)
print(type(param))
demo(1,2,3,4,5,6)
'''
输出结果:
(1, 2, 3, 4, 5, 6)
<class 'tuple'>
'''
a = (1,2,3,4,5,6,7,8)
demo(*a)
def demo1(param1,*param,param2 = 2):#默认参数要放到最后,不可以默认参数和可变参数夹杂着
print(param1)
print(param)
print(param2)
demo1('a',1,2,3,param2 = 'param')
8-8 关键字可变参数
def city_temp(**param):
print(param)
print(type(param)) #类型为字典
for key,value in param.items():
print(key,':',value)
city_temp(bj = '32c',xm = '36c')
a = {'bj':'32c'}
city_temp(**a)
8-9 变量作用域
c = 50
def add(x,y):
c = x + y
print(c)
add(1,2)
print(c) #打印出来是50,因为这个c是函数外部的c
print('~~~~~~~')
a = 10
def demo():
print(a)
demo()
print('~~~~~~~')
def demo1():
c = 50
for i in range(0,9):
a = 'a'
c += 1
print(c)
print(a) #可以在for循环外部引用for循环变量
demo()
8-10 作用域链
c = 1
def func1():
c = 2
def func2():
c = 3
print(c)
func2()
func1()
打印出结果为3
c = 1
def func1():
c = 2
def func2():
print(c)
func2()
func1()
打印出结果为2
c = 1
def func1():
def func2():
#c = 3
print(c)
func2()
func1()
打印出结果为1
8-11 global关键字
def demo():
global c
c = 2
demo()
print(c)
用global将局部变量变成全局变量
全局变量适用于整个应用程序,不仅仅是自己的模块