一 定义函数:
def greet_user():
print("Hello")
greet_user()
函数由关键字def,函数名greet_user(),()内可添加需要添加上才能完成工作的参数。
greet_user()即调用函数,括号内一般需要加上需要传递的参数。
二 传递参数:
向函数传递实参的方式多样,可使用位置参数,关键字参数,列表字典等。
1. 位置实参:位置参数在传递实参时要求与形参顺序相同。
def describe_pet(pet_type, pet_name):
print("The " + pet_type + "'s name is " + pet_name.title() + ".")
describe_pet('dog','haha')
2. 关键字实参:关键字实参传递的是名称-值,不需要考虑顺序。
def describe_pet(pet_type, pet_name):
print("The " + pet_type + "'s name is " + pet_name.title() + ".")
describe_pet(pet_name = 'haha', pet_type = 'dog')
3. 默认值:很多情况下会为形参设置默认值,在实参没有给值的情况下,直接使用默认值。
def describe_pet(pet_name, pet_type='dog'):
print("The " + pet_type + "'s name is " + pet_name.title() + ".")
describe_pet('haha')
上面的例子中也将得到与1 2 相同的结果。
需要注意的是:在使用默认值的情况下,需要在形参列表中先列出没有默认值的形参,最后再列出有默认值的,从而避免python无法正确解读出对应的位置参数。
三 返回值:
函数并非总是直接显示输出,它可以处理一些数据之后返回一个或是一组值,称为返回值,一般使用return 语句将值返回到函数的代码行中。
在调用函数的返回值时,需要提供一个变量,用于存储返回的值。
实例:
def city_country(city_name, country_name):
print(country_name + ":" + city_name)
while True:
print("Please input country name and city name:")
country = input("Please input country name: ")
if country == 'q':
break
city = input("Please input city name: ")
if city == 'q':
break
name = city_country(country,city)
print(name)
四、 将函数存储在模块中
将函数存储在模块中,可以隐藏代码细节,还能在不同程序中重用函数。
模块就是扩展名为.py的文件,文件里只包含函数。
比如在模块a 中有函数b c d等,那么在其他程序中导入该模块及函数的的方式有以下各种:
1. 导入整个模块:import a
调用: a.b(参数1,参数2,……)
2. 导入特定的函数:
from a import b
调用: b(参数1,参数2,……)
3. 使用as 给函数指定别名:
from a import b as B
B(参数1,参数2,……)
使用as 给模块指定别名:
import a as A
4. 导入模块中的所有函数:
import * from a
B(参数1,参数2,……)
一般不要使用这种调用方式,因为当模块中有函数名称跟自己的项目中使用的名称相同时。可能会有意想之外的结果。
五:函数编写时需要注意的问题
1. 给函数或模块命名为描述性的名称,并且只在其中使用小写字母和下划线。
2. 给函数添加简要的功能注释。
3. 给形参设置默认值时,等号两边不要有空格。
4. 对于函数调用中的关键字参数,也要注意等号两边不要有空格。
5. 当文件开头没有使用注释来描述整个程序时,所有的import 语句必须放在文件开头。
参考自《Python编程从入门到实践》