1.定义函数
函数是带名字的代码块, 用于完成具体的工作
定义函数需要用到关键字def
使用"def ‘函数名’:"的格式,以下一个缩进的每一行都可以是函数内容
可以看一下下面的简单的例子
def greet_user(): # 此处记得以冒号结尾
# 本函数具有问候作用
print("Hello! ") # 缩进部分是函数内的内容可以是多行
greet_user() # 要想使用函数还要进行函数的调用
1.1向函数传递信息
可在函数定义的部分的括号内添加变量使得向函数传递信息
def repeat(message_fun):
print(message_fun)
message = input("看我用函数学你说话")
repeat(message)
在函数定义中的变量叫做形式参数比如上面的message_fun
而调用函数是使用的message则是实际参数
2.传递实参
实参和形参在括号内的顺序是一一对应的
def fun_2(function_1, function_2):
print(function_1 * 0, function_2 * 100)
num_1 = 12
num_2 = 11
fun_2(num_1, num_2) # 实参num_1向形参function_1传递信息, 实参num_2向形参function_2传递信息
# 结果为0 1100
# 注意, 实参的顺序很重要
2.1关键字实参
def describe_your_pet(animal_type, pet_name):
print(f"我有一只{animal_type}")
print(f"我的{animal_type}名字叫{pet_name}")
describe_your_pet(animal_type='小猫', pet_name='小碗儿')
关键字实参是传递给函数的名称值对, 因为直接在实参中将名称和值关联起来, 所以使用关键字实参时并不需要在意其顺序
2.2默认值
编写函数时, 可以给形参指定默认值, 当调用函数时没有给指定了默认值的形参编写实参时将使用默认值, 否则使用实参传递的数据
def describe_film(film_name_fun, film_type_fun='narration'):
print(f"我最喜欢的电影叫{film_name_fun}, 他的类型是{film_type_fun}")
film_name = 'EVA'
describe_film(film_name)
默认参数要放在非默认参数后面, 否则系统会报错
3.返回值
函数也可以处理一些数据并返回一个或一组值, 函数返回的值称为返回值
def plus_function(fun_num_1, fun_num_2): # 如何优雅的求两个数的和
sum_1 = fun_num_1 + fun_num_2
return sum_1 # 返回值
num_1, num_2 = 1, 1
print(plus_function(num_1, num_2))
3.1让实参变为可选的
就是给某些形参赋予默认值, 被赋予默认值的形参要排在未被赋值的实参之后
def plus_print_function(fun_num_1, fun_num_2=0): # 论如何优雅的实现加法和打印
if fun_num_2:
return fun_num_1 + fun_num_2
else:
return fun_num_1
num_1, num_2 = 1, 1
print(plus_print_function(num_1)) # 当没有num_2时则直接输出
print(plus_print_function(num_1, num_2)) # 当有num_2时则求两者加法
3.2返回字典
函数可以返回任何类型的值,包括列表和字典
def build_person(fun_name, fun_gender):
person = {
'name': fun_name, 'gender': fun_gender, }
return person
person = build_person('行秋', '男')
print(person)
# 使用函数为字典添加键值对
def build_person_1(fun_name, fun_gender, fun_birthday=None):
fun_person_1 = {
'name': fun_name, 'gender': fun_gender, }
if fun_birthday:
fun_person_1['birthday'] = fun_birthday
return fun_person_1
person_1 = build_person_1('迪卢克', '男', '4.30') # 可以让函数接受可选值
print(person_1)
3.3结合使用函数和循环
def get_formatted_name(first_name,last_name):
full_name = f"{first_name} {last_name}"
return full_name.title()
f_name = ['jimi', 'jhon']
l_name = ['hendrix', 'hooker']
for f, l in f_name, l_name: # 诶呦呦, 原来for循环还带这么玩的呀
print(f"Hello! {get_formatted_name(f, l)}")
4.关于最后一个例子的补充
最后一个例子我发现了一个for循环可以遍历多个列表
经过实验, 我发现即便可以用for循环同时遍历多个列表, 也是有条件的
1.遍历的列表容量要一致
2.如果是两个列表则每个列表的容量必须是2, 如果是三个列表, 每个列表的容量必须是3, 以此类推
3.遍历的顺序并非按照代码编写的顺序, 而是依次遍历各个列表
list_1 = [1, 2, 3, 4]
list_2 = [5, 6, 7, 8]
list_3 = [9, 10, 11, 12]
list_4 = [13, 14, 15, 16]
for l1, l2, l3, l4 in list_1, list_2, list_3, list_4:
print(l1, l2, l3, l4)
'''
输出结果为
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
不是想象的
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
'''
总之这种做法容易报错不建议使用
希望能帮到你