python 函数
更新计划
函数
1、定义函数
2、实参与形参
3、传递实参(位置实参、关键字实参、默认值、等效的函数调用、避免参数错误)
4、返回值(返回简单值、实参可选、返回字典、结合使用函数和while循环)
5、传递列表(修改列表、禁止函数修改列表)
6、传递任意数量的实参
7、将函数存储在模块中(导入整个模块、导入特定的函数,使用as给函数指定别名、使用as给模块指定别名、导入模块中的所有函数)
函数
什么是函数?函数是带名字的代码块,用于完成具体的工作。写出一个函数后,就可以一直调用。
定义函数,函数的基本组成:
1.1 向函数传递参数
向函数中传递任意参数,这样打印出的结果就可以根据自己的选择,做出改变。即是下一节讲到的形参
1 #向函数传递信息 2 3 def greet_user(username): 4 """显示简单的问候语""" 5 print("hello," + username + "!" ) 6 7 greet_user(‘python‘)
打印结果:
hello,python!
2、形参与实参
什么是形参?顾名思义,形参就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有意义。相当于变量。
什么是实参?顾名思义,实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等。
以上面的例子介绍下什么是形参和实参:
就是在函数名中定义一个形参,然后在函数调用的时候,给函数名中的形参传递一个实际的参数,这个就变为实参。这样的话执行函数体内容时就会执行对应的操作。
注意:传入实参时,一定要加上引号,否则会报错。
greet_user(python) NameError: name ‘python‘ is not defined
3、传递实参(位置实参、关键字实参、默认值、等效的函数调用、避免参数错误)
使用背景:
函数定义中可能包含多个实参,而向函数传递实参的方式有很多,位置实参和关键字实参等。
3.1、位置实参
调用函数时,必须将函数调用中的每个实参都关联到函数定义中的一个形参。关联方式是基于实参的顺序,这被称作位置实参
1 #位置实参 2 def describe_pet(animal_type,pet_name): 3 """显示宠物信息""" 4 print("\nI have a " + animal_type + ".") 5 print("My " + animal_type + "‘s name is " + pet_name.title() + ".") 6 7 describe_pet(‘dog‘,‘harry‘)
执行结果:
I have a dog. My dog‘s name is Harry.
3.1.1 可以多次调用函数
1 def describe_pet(animal_type,pet_name): 2 """显示宠物信息""" 3 print("\nI have a " + animal_type + ".") 4 print("My " + animal_type + "‘s name is " + pet_name.title() + ".") 5 6 describe_pet(‘dog‘,‘harry‘) 7 8 #可以多次调用 9 describe_pet("cat",‘coo‘) 10 describe_pet(‘pig‘,‘echo‘)
执行结果:
1 I have a dog. 2 My dog‘s name is Harry. 3 4 I have a cat. 5 My cat‘s name is Coo. 6 7 I have a pig. 8 My pig‘s name is Echo.
3.1.2 实参的位置也很重要,本末倒置可不好
describe_pet(‘coo‘,‘dog‘)
执行结果:
I have a coo. My coo‘s name is Dog.
3.2、关键字参数
关键字实参 是传递给函数的名称:值对。直接将形参与实参关联起来,这样就不存在顺序问题(不会像上一个例子一样出现搞笑的结果)。
示例:
1 2、关键字实参 2 def describe_pet(animal_type,pet_name): 3 """显示宠物信息""" 4 print("\n关键字实参示例:") 5 print("I have a " + animal_type + ".") 6 print("My " + animal_type + "‘s name is " + pet_name.title() + ".") 7 8 describe_pet(animal_type="dog",pet_name="harry")
执行结果:
关键字实参示例: I have a dog. My dog‘s name is Harry.
3.3、默认值参数
原文:https://www.cnblogs.com/aszeno/p/10384887.html