Python之认识函数

//对执行某功能的代码块进行封装,可重复调用,将代码块与主程序分离,可让主程序更易理解

1.格式

def functionName(): //define(规定)
“”” 文档字符串(描述此函数的作用)”“”
代码块

2.形参和实参

形参:定义函数时函数名后的变量
实参:调用函数时提供给函数的信息

3.传递实参


A.位置实参:形、实参顺序对应,可多次调用
B.关键字实参(命名参数):每个实参都是变量名和值关联,无需考虑顺序
C.默认值(缺省参数):若未指定实参则用形参中定义的默认值
D.不定长参数:
函数可以接受不定个数的参数传入
#函数调用时,传入的不定长参数会封装成元组
def function([format_args,] * args)
#函数调用时,传入的不定长参数封装成字典
#养老金、医疗、公积金
def any_num_dict(b_money,**proportion):
print(proportion)
e_money=b_money * proportion["e"]
m_money=b_money * proportion["m"]
a_money=b_money * proportion["a"]
return e_money,m_money,a_money
any_num_dict(10000,e=0.2,m=0.1,a=0.3) }
def function([format_args,]) ** args)
#形参既有位置、不定长和缺省的话传参时缺省要赋值!

4.返回值

//处理一些数据并返回一个/一组值
A.直接对函数中每个值进行处理
{ #利用函数实现通过列表实现计算器
def compute(x,y):
res_plus=x+y
res_minus=x-y
res_ride=x*y
res_chu=x/y
return res-plus,res_minus,res_ride,res_chu //默认返回元组
plus,minus,ride,chu=compute(10,5)
print(~) }

5.通过默认值传递实参让实参编程可选的

{ #通过姓名的中间名来测试实参可选
def get_formatted_name(first_name,last_name,middle_name=”):
“”“判断是否有中间名并返回”“”
if middle_name:
full_name=first_name+middle_name+last_name
else:
full_name=first_name+last_name
return full_name

没有中间名测试
name = get_formatted_name(‘Kevin’,’Mahone’)
print(name)

有中间名测试
name = get_formatted_name(‘Kevin’,’Mahone’,’nice’)
print(name) }

6.返回字典

def build_person(f_n,s_n):
“”“返回一个字典,包含一个人信息”“”
person={‘first_name’:f_n,’second_name’:s_n}
return person
print(build_person(‘Kevin’,’Mahone’))

7.结合使用函数和while循环
{ #以正规方式问候顾客
def get_formatted_name(first_name,last_name):
”’连接名字”’
full_name=first_name+last_name
return full_name

开始while提示用户输入
while True:
print(“Please tell me your name:\n”)
print(“(enter ‘q’ at any time to quit!)”)

f_name=input("First name:\n")
if f_name == 'q':
    break
l_name=input("Last name:\n")
if l_name == 'q':
    break

formatted_name=get_formatted_name(f_name,l_name)
print("Hello,"+formatted_name+"!")
break   }

8.传递列表

A.向函数传递列表
B.在函数中修改列表
{
def print_models(unprinted_models,complete_models):
”’模拟打印的每个设计并打印每个设计后,移动到complete_models中”’
while unprinted_models:
current_models=unprinted_models.pop()
complete_models.append(current_models)
def show_complete_models(complete_models):
”’显示打印完成的所有模型”’
for complete_model in complete_models:
print(complete_model)
unprited_models=[‘one’,’two’,’three’,’four’,’five’]
complete_models=[]
print_models(unprited_models,complete_models)
show_complete_models(complete_models) }
C.禁止函数修改列表
//调用函数时实参中:functionName(act_par1[:],act_par2) //传递的是原列表的副本

9.传递实参

A.传递任意数量实参
functionName( * formalParameter) //不管提供多少实参此形参都会囊括
B.结合使用位置实参和任意数量实参
//在函数定义中将接纳任意数量的实参的形参放到最后
【Pyhon先匹配位置实参和关键字实参,最后将余下的实参收集到最后一个形参中】
C.使用任意数量的关键字实参

10.函数存储在模块中

//函数存入模块的独立文件中,可隐藏代码的细节,将重点放到高层逻辑上在不同的程序中重用函数
【模块为扩展名.py文件】
A.格式:
–导入模块,使用模块中函数:
import moduleName
moduleName.functionName()
–导入模块中所有函数
from moduleName import *
–导入特定函数:
from moduleName import functionName
-通过逗号分隔函数名,可导入任意数函数:
from moduleName import functionName0,functionName1,functionName2
B.使用as指定别名
–给模块指定别名:
import moduleName as mN
–给函数指定别名:
from moduleName import functionName as fN

11.函数编写指南

//编写函数时牢记的细节:
–规范的(”_”分割)指定函数描述性名称
–每个函数都应有阐述性注释,紧跟在函数定义后,并采用文档字符串的格式
–PEP8建议代码长度不要超过79个字符,如果形参过多:

def functionName(
paramter_0,paramter_1,paramter_2,
paramter_3,paramter_4,paramter_5 ):
function body

猜你喜欢

转载自blog.csdn.net/Aaron_Miller/article/details/80230866