Python教程——函数的使用
Python教程——函数的使用
本篇介绍使用Python来封装函数代码块,使得程序的模块化设计可以有效的进行
使用函数的基本形式
- 函数可多次调用,减少重复工作才是封装函数真正目的
- 将任务分批次完成,每个步骤通过函数的封装,不仅仅能在这里完成某项工作中完成,其他的工作也能调用其中的某一步,合理的分配步骤能真正的实现代码优化
- 可以向函数传入不同的数据类型。
封装函数
def addto_(a,b):
return a+b
以上代码封装了一个函数方法,传入参数a与b,返回a+b
黑盒模型****
本地调用调用函数
def addto_(a,b):
return a+b
print(str(addto_(1,2))) #3
#使用函数时直接使用函数名输出即可
上述将调用的函数通过转化为字符串的形式输出
在不同的py文件下调用函数
express.py:
def addto_(a,b):
return a+b
test.py:
import express
print(str(express.addto_(1,2))) #3
以上代码通过import从express.py文件中直接调用addto_的方法,可以直接进行使用,实际上我们在一般的情况下,将每个方法分成多个模块,就需要不同的py文件封装,从而使得代码更加规范化
实参和形参
- 实参:调用函数时传递给函数的信息
- 形参:函数完成工作所需的信息
位置实参
- 每个实参都要对应着函数中的实参,而在上面的代码,实现的就是默认位置的调用
- 上述代码中:a=1,b=2
- 位置的顺序在很多情况下很重要,因此在多参数的情况下,位置实参并不是一个很好的选择。
关键字实参
def addto_(a,b):
return a+b
print(str(addto_(b=1,a=2))) #3
上述代码展示了关键字实参的用法,对原有的顺序不置可否,关键的还是要看形参与实参的关系。
以上代码与上面代码块不同的是,b=1,a=2,是通过我直接将实参赋给形参带入运行的
值得引起我们重视的是,通过上述的方法需要你清楚的记得函数中的形参的形参的拼写
默认值
def addone_(a,b=1):
return a+b
print(str(addone_(1))) #2
以上b通过默认值设置,我们不必再输入b的值,因为其已经默认为1,同样我们可以通过位置参数、关键字参数对其进行修改
因此在使用默认值时,在形参中必须先通过关键字参数列出没有默认值的形参,再列出有默认值的形参。这让Python依然能正确地解读位置参数
传入的列表不修改内容
- 通过def XXX(数组[ : ]),即通过备份来完成实现对列表的备份
传入任意数量的实参
def addto_(*nums):
sums = 0
for num in nums:
sums = sums + num
print(str(sums))
addto_(1,2,3,4,5) #15
通过“*”来表示可以输入任意数量的实参
需要注意的是,其中的值都为元组
接收任意数量的键—值对
def people(name,**message):
print("name:"+name)
for key,value in message.items():
print(key+":"+ str(value))
people("Lindan",age=37,nationality="China")
'''
name:Lindan
age:37
nationality:China
'''
通过传入的键—值对实现对字典的输出,同样,以上也能看出位置实参与任意数量实参的灵活运用
在编写程序时,你可以灵活使用位置实参、关键字实参和任意数量的实参
模块化灵活运用函数
- 上面我们简单介绍过在其他py文件中直接调用函数,现我们再进一步拓展
express.py:
def addto_(a,b):
return a+b
以上是我需要导入的函数
导入py文件中特定函数
from express import addto_
print(str(addto_(1,2))) #3
我们从express文件中导入addto_的函数,这可直接在当前文件中使用该函数
使用as定义别名
from express import addto_ as addnum_
print(str(addnum_(1,2))) #3
通过as可以重新给函数命名,变成你喜欢的名字,但是值得注意的是,定义别名后,原函数名不可使用
import express as add_to
print(str(add_to.addto_(1,2))) #3
通过as也可以对模块进行重命名
导入所有的函数
from express import *
print(str(express.addto_(1,2)))
一个模块中不止一个函数,因此想要导入所有的函数,就可以通过 “ * ” 实现
本文地址:https://blog.csdn.net/weixin_46139709/article/details/107469195