函数基础
----------------------------------------------------------------------------------------------------------------
1.函数的定义
语法:
def 函数名() :
代码块
# 函数只封装代码,不主动调用不会输出
2.函数的文档注释
在函数体的下方用""" """的方式注释,pycharm中使用ctrl+Q 弹出窗口可以查看注释,如下所示
3.函数的参数
def sum_num(sum1,sum2) :
4.实参 形参
定义函数的参数叫形参
调用函数的参数叫实参
def sum_num(sum1, sum2): # 此处的sum1,sum2就是形参
""" 对两个数字的求和"""
result = sum1 + sum2
print("%d+%d=%d" % (sum1, sum2, result)) # 此处的sum1,sum2就是实参
return result
5.函数的返回值 return
让函数调用的一方知道返回值
def sum_num1(sum1, sum2):
""" 对两个数字的求和"""
result = sum1 + sum2
return result # 返回result,以便于在下方输出
resilt = sum_num1(10, 3000)
print('输出结果为%d' % resilt)
6.函数调用函数
def print_a():
print('a' * 50)
def print_b():
print('b' * 50)
print_a() # 嵌套a函数
print('c' * 50)
print_b()
7.模块名不能以数字和关键字开头的
文件study08_test.py
# 文件名定义为study08_test.py
# 打印横线
def print_u(sum, count):
print(sum * count)
def print_uu(sum, count):
num = 0
while num < 5:
print_u(sum, count)
num += 1
name = 'asdsa'
引入文件study08_test.py中的模块
import study08_test # 引入模块
study08_test.print_uu('x', 10)
print(study08_test.name)
如果文件名以数字和关键字开头,则会出现引入不了(不能正常调用)的问题
8.pyc文件
py是python文件 pyc是 python complied 编译过的python文件
----------------------------------------------------------------------------------------------------------------
函数进阶
1.函数参数和返回值的作用
参数 在函数体内暂时无法确定变量值的时候使用
返回值 在需要向函数体外部报告执行结果的时候使用
2.返回值进阶
多个返回值可以返回一个元组
# 返回值练习
def test1():
print('start')
name = 'yl'
age = '18'
print('end')
return (name, age)
# 可以简化为 return name, age
result = test1()
print(result)
# 返回值练习2 在需要对返回结果单独处理时
def test2():
print('start')
name = 'yl'
age = '18'
print('end')
return name, age
name, age = test2() # test1是一个元组,把第一个传递给name 第二个传递给age
print(name)
print(age)
3.变量交换
def test1():
a = 1
b = 2
c = a
a = b
b = c
print(a)
print(b)
def test2():
a = 1
b = 2
a = a + b
b = a - b
a = a - b
print(a)
print(b)
# 在python中推荐此交换方式
def test3():
a = 1
b = 2
# a,b =(b,a)
a, b = b, a
print(a)
print(b)
4.对参数赋值的时候,只会影响函数内部调用参数的值,不会影响全局变量的值
注意:在函数体内部使用方法对可变参数进行操作时,可以修改全局变量的值
在操作可变类型参数时 +=运算符相当于append方法, 意味着+=可以修改全局变量的值
# 不可变(不可变参数类型)
def test1(a):
a = 1
print(a)
a = 2
test1(a)
print(a)
# 不可变(可变参数类型)
def test2(a_list):
a = [1, 2, 3]
print(a)
glo_list = [4, 5, 6]
test2(glo_list)
print(glo_list)
# 可变(可变参数类型) 在使用方法对可变参数进行操作时
def test3(a_list):
a_list.append(4)
print(a_list)
glo_list2 = [1, 2, 3]
test3(glo_list2)
print(glo_list2)
5.缺省参数
例如 list.sort() 默认使用正序
# 缺省参数练习
def test1():
test_list = [1, -1, 3, 0]
# test_list.sort() # 默认使用正序
test_list.sort(reverse=True) # 使用倒序
print(test_list)
def test2(name, sex=True): # 定义性别默认是ture
sex_man = '男生'
if not sex:
sex_man = '女生'
print('%s是%s' % (name, sex_man))
test1()
test2('小明')
6.缺省参数的定义
注意: 缺省参数放在多个参数的末尾
7.多值参数
参数
*参数 (代表可以传递元组类型参数)
**参数 (代表字典)
# 多值参数
def test3(num, *list, **dic):
print(num)
print(list)
print(dic)
test3(1, 2, 3, 4, 5, 6, name='yl', age=18)
# 使用多值参数进行数字累加
# 使用多值参数进行数字累加
def acc(*args):
sum = 0
for x in args:
sum += x
return sum
result = acc(1, 2, 3)
print(result)
# 多值参数的拆包
# 多值参数的拆包
def test4(*args, **dic):
print(args, dic)
num_list = [1, 2, 3]
dic_list = {'name': 'yl', 'sex': '18'}
test4(num_list, dic_list) # 默认全部放到args
test4(*num_list, **dic_list)