文章目录
1、一个简单的函数
函数用关键字def来定义,传参时不用指定参数类型
para:形参 parameter
arg:实参 argumen
形参的类型和实参的类型一致
def my_fun(para):
print(para)
def back_item(src, dest):
dest = src
my_fun('arg')
my_fun([1, 3, 4])
my_fun({1: 'name', 2: 'age'})
d = 0
# 同c语言一样d的值不会被改变
back_item(1, d)
print(f"d = {d}")
2、多参数函数
形参可设置默认值,但要放在未设置默认值的形参的后面
可使用关键字实参为函数赋值,可不考虑实参的顺序
def animal_introduce(name, num=4):
print(f"This is {name}, it got {num}")
animal_introduce('aa', 2)
animal_introduce('bb')
animal_introduce(name='cc', num=3)
animal_introduce(num=1, name='dd')
3、返回值
3.1、简单的返回
给中间名设置一个空的默认值,使其变成可选输入项
def get_name(first_name, last_name, middle_name=None):
if middle_name:
full_name = first_name + ' ' + middle_name \
+ ' ' + last_name
else:
full_name = first_name + ' ' + last_name
return full_name.title()
name = get_name('tom', 'hanks')
print(name)
name = get_name('Stanley', 'Martin', 'Lieder')
print(name)
3.2、返回列表和字典
def get_info(first_name, last_name, age=None):
person = {'first': first_name, 'last': last_name}
if age:
person = [first_name, last_name, age]
return person
info_dictionary = get_info('aa', 'cc')
print(info_dictionary)
info_list = get_info('dd', 'ee', 20)
print(info_list)
3.3、多个返回值
多个返回值,实际上传出的是一个元组
def my_fun():
name = 'XiaoMing'
age = 11
return name, age
info = my_fun()
print(info)
n, a = info
print(n,a)
4、传入列表
传进函数的列表可被修改
若不修改列表,可传入列表的副本
def backup_list(src_list, dest_list):
for item in src_list:
dest_list.append(item)
my_list = ['aa', 'bb', 'cc', 123]
bak_list=[]
# 传递列表的副本,列表不会被修改
# backup_list(my_list,bak_list[:])
backup_list(my_list[:],bak_list)
print(bak_list)
5、传入任意数量的实参
5.1、以元组和字典的形式
*args:让python创建一个名为args的空元组
**kwargs:让python创建一个名为kwargs的空字典
命名不一定非得是以上两个
def create_tuple(*args):
for arg in args:
print(arg, end=',')
def create_dictionary(**kwargs):
print(kwargs)
create_tuple(1, 2, 'aa', 'abcd')
print()
create_dictionary(name='aa', age=1, sex='man')
5.2、形参的排列顺序
形参的顺序只能按:未指定默认值,指定默认值,*,**来排
即下面的顺序
def my_fun(name, age=12, *args, **kwargs):
print(name)
print(age)
print(args)
print(kwargs)
# 后面的实参关键字不能再包含name,age
my_fun('XiaoMing', 20, 'aa',
'bb', 'cc',
item='dd', sex='man')
6、将函数储存在模块中
可将函数存储在一个被称为模块的独立文件中(类似c语言库)
通过import可导入模块
通过from可导入指定函数
创建顺序
1、在主程序的目录下创建一个名为UserFunction.py的文件
2、在Userfunction.py创建一个函数
3、在主程序中导入该模块(Userfunction)
4、在主程序中调用模块中的函数
5、使用as可以改模块和函数指定别名
- UserFunction.py
def print_hello():
print('hello', end=' ')
def print_world():
print('world')
- main.py
# 1 导入模块
import UserFunction as uf
# 2 导入模块的某个函数
from UserFunction \
import print_world as pw
# 3 导入模块里所有的函数,注意避免与主程序函数名重复
from UserFunction import *
uf.print_hello() # 执行该语句只需要有1
pw() # 执行该语句只需要有2
# 执行下面的语句只需要有3
print_hello()
print_world()
笔记来源:《Python编程 从入门到实践》