前言
函数是带名字的代码块,用于完成具体的工作
函数
def say_hello():
"""文档字符串"""
print('Hello')
say_hello()
函数传参
def say_hello(user_name):
print("Hello," + user_name.title())
say_hello('world')
实参和形参
# 在函数say_hello()的定义中,变量user_name是一个形参——函数完成其工作所需的一项信息。
# 在代码say_hello('world')中,值'world'是一个实参,实参是调用函数时传递给函数的信息,
# 这个值被存储在形参username中。
位置实参
# 按顺序关联实参到形参称为位置实参
def describe_language(user_name, language):
"""描述喜欢的语言"""
print(user_name.title() + "'s favorite language is " + language.title() + ".")
describe_language('maggieq', 'java')
describe_language('coisini', 'python')
关键字实参
# 关键字实参(明确指出各个实参对应的形参)
# 关键字实参是传递给函数的名称—值对,明确指出各个实参对应的形参
describe_language(language='c', user_name='tom')
默认值
# 可以给函数形参设置默认值
def describe_language(user_name, language ='python'):
"""描述喜欢的语言"""
print(user_name.title() + "'s favorite language is " + language.title() + ".")
describe_language(user_name='coisini')
describe_language(user_name='maggieq', language='java')
返回值
def get_formatted_name(first_name, last_name):
"""返回整洁的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title()
print(get_formatted_name('Li', 'Si'))
返回字典
def get_person(first_name, last_name):
"""返回一个字典,其中包含一个人的信息"""
person = {'first': first_name, 'last': last_name}
return person
print(get_person('jimi', 'hendrix'))
传递列表
def get_users(names):
"""向列表中的每位用户发出问候"""
for name in names:
print("Hello," + name.title())
get_users(['coisini', 'maggieq'])
传递任意数量的实参
# *languages意为用空元组接收所有实参
def print_languages(*languages):
"""打印所有语言"""
print(languages)
print_languages('java')
print_languages('java', 'python', 'c')
结合使用位置实参和任意数量实参
# 要让函数接收不同类型的实参,必须将接纳任意数量实参的形参放在最后
# python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中
def print_languages(user_name, *languages):
print(user_name.title() + "'s favorite language is:")
for language in languages:
print("- " + language)
print_languages('coisini', 'java')
print_languages('maggieq', 'java', 'python', 'c')
使用任意数量的关键字实参
# **user_info 表示用一个名为user_info的空字典接收所有键值对
def build_person(first, last, **user_info):
"""创建一个字典,接收所有"""
person= {}
person['first'] = first
person['last'] = last
for key, val in user_info.items():
person[key] = val
return person
user_person = build_person('Li', 'Si',
location='China',
sex='man')
print(user_person)