衡水wap网站建设,怎么注册建设公司网站,仿站软件,达内前端基本概念
函数是一种能够完成某项任务的封装工具。在数学中#xff0c;函数是自变量到因变量的一种映射#xff0c;通过某种方式能够使自变量的值变成因变量的值。其实本质上也是实现了某种值的转换的任务。
函数的定义
在python中#xff0c;函数是利用def来进行定义函数是自变量到因变量的一种映射通过某种方式能够使自变量的值变成因变量的值。其实本质上也是实现了某种值的转换的任务。
函数的定义
在python中函数是利用def来进行定义
def Lego_pricediscount():用来计算打折以后的lego价格print(You are making a day dream)第一行def Lego_pricediscount():是用来定义函数名和传递参数的。对于本例来说函数名就是Lego_pricediscount见名知意。括号内可以用来传递参数本例中的函数无需参数但是很多情况下函数是需要得到一些输入才能运行的后面会介绍 第二行用来计算打折以后的lego价格是注释用以表述函数的功能。这一部分不是必须要写的内容但是如果写了可以大大提高的函数可读性 第三行print(You are making a day dream)是函数的主体是函数功能实现的具体代码 如果函数有返回值末尾还需要加上return XXX。本例为无返回值函数后面会介绍
函数的调用
函数的调用比较简单如果调用上面例子中的函数直接
Lego_pricediscount()如果函数有参数那么调用的时候应该相应的在括号内添上参数
参数
基本概念
实参实际参数具有具体值的参数
Add(100,200) # 100,200是实参形参形式参数仅代表一个参数形式不代表具体值的参数
def Add(a,b) # ab是形参实参的传递
位置实参
对于位置实参而言函数调用的参数顺序要和函数定义的参数顺序一致否则会发生错误。
def Lego_pricediscount(price, discount):用来计算打折以后的lego价格print(fThe price is {price*discount}.)正确的调用方式
lego_price 398
lego_discount 0.88
Lego_pricediscount(lego_price, lego_discount)错误的调用方式
lego_price 398
lego_discount 0.88
Lego_pricediscount(lego_discount, lego_price)虽然这样做也能正确的运行甚至对于本题来说结果一样因为加法有交换率但是参数的意义就不同了。对于这种错误的方式乐高的价格变成了0.88乐高的折扣变成了398这是没有意义的。
关键字实参
对于关键字实参而言函数调用的参数顺序要和函数定义的参数顺序可以不一致因为关键字实参将名称与参数联系在了一起
def Lego_pricediscount(price, discount):用来计算打折以后的lego价格print(fThe price is {price*discount}.)lego_price 398
lego_discount 0.88
Lego_pricediscount(discountlego_discount, pricelego_price)
Lego_pricediscount(pricelego_price, discountlego_discount)上图中无论哪种调用方式都是正确的因为discountlego_discount, pricelego_price这种写法相当于告诉了原函数哪一个参数对应的是哪个不需要再考虑顺序。
默认实参
很多时候我们需要跟函数指定一下参数的默认值因为我们有的时候传递的参数并不全而对于那些没有传入值的参数如果我们不指定默认值的话很有可能会发生报错或者无法正常运行。
def Lego_pricediscount(price, discount1.0):用来计算打折以后的lego价格print(fThe price is {price*discount}.)lego_price 398
lego_discount 0.88
Lego_pricediscount(discountlego_discount,pricelego_price)
Lego_pricediscount( pricelego_price)输出结果
The price is 350.24.
The price is 398.可选实参
可选实参指的是可以选择输入的参数
def Lego_pricediscount(price, discount):用来计算打折以后的lego价格if discount:print(fThe price is {price*discount}.)return price*discountelse:print(fThe price is {price}.)return pricelego_price 398
lego_discount 0.88
Lego_pricediscount(discountlego_discount,pricelego_price)
Lego_pricediscount(pricelego_price)输出结果
The price is 350.24.
The price is 398.这里的discount没有输入也没有默认值也可以正常输出结果
不限数量实参
有些时候我们不知道函数需要接收多少个实参这时候我们定义函数时就需要不限数量的实参都能传入。
def Lego_pricediscount(*Lego):for lego in Lego:print(fI want to buy {lego}.)Lego_pricediscount(LegoCity, )
Lego_pricediscount(LegoCity, LegoMarvel)
Lego_pricediscount(LegoCity, LegoMarvel, LegoHouse)输出结果
I want to buy LegoCity.
I want to buy LegoCity.
I want to buy LegoMarvel.
I want to buy LegoCity.
I want to buy LegoMarvel.
I want to buy LegoHouse.*Lego本质上是创建了一个空元组。
其实**Lego在python中也有对应的意义相当于创建一个空字典。
**Lego作为函数参数可以传入键值对
返回值
有的函数可以返回一些生成结果等内容我们称其为返回值我们可以用变量去接受这些返回值相当于一个赋值的过程。返回值不仅仅局限于数值和字符串也可以返回列表、字典等。
def Lego_pricediscount(price, discount1.0):用来计算打折以后的lego价格# print(fThe price is {price*discount}.)return price*discountlego_price 398
lego_discount 0.88
pLego_pricediscount(discountlego_discount,pricelego_price)
print(p)输出结果
350.24函数与列表
函数中传入的参数可以是一个列表我们可以利用函数对列表进行一系列的处理。
def Lego_pricediscount(Lego):for lego in Lego:print(fI want to buy {lego}.)Lego [LegoCity, LegoMarvel, LegoHouse]
Lego_pricediscount(Lego)输出结果
I want to buy LegoCity.
I want to buy LegoMarvel.
I want to buy LegoHouse.我们还可以在函数中修改列表等。这里需要注意的是如果我们不希望对原列表进行修改但是能照常完成输出我们需要用到切片
def Lego_pricediscount(Lego):for lego in Lego[:]:lego lego _legoprint(fI want to buy {lego}.)Lego [LegoCity, LegoMarvel, LegoHouse]
Lego_pricediscount(Lego[:])
print(Lego)输出结果
I want to buy LegoCity_lego.
I want to buy LegoMarvel_lego.
I want to buy LegoHouse_lego.
[LegoCity, LegoMarvel, LegoHouse]我们会发现原列表并没有被改变。这里的切片实际上对列表的副本进行操作
函数模块化
在项目工程量比较大的时候我们常常会将函数单独放在一个文件夹。多个函数组成一个模块。这样我们只要导入这个模块就可以任意使用模块中的相关函数。具体的导入格式如下
导入整个模块
# import 模块名
import Lego我们还可以给模块名重命名这样对于比较长的模块名我们就可以简化操作
import Lego as lg之后在本python文件中我们可以直接用lg来代替Lego模块
导入特定函数
# from 模块名 import 函数名
from Lego import Lego_Price
# from Lego import * 导入模块所有函数不过不建议使用这种方法类似的我们也可以重命名函数
from Lego import Lego_Price as lp