python调⽤class定义的函数_python定义函数与调⽤定义函数的语法
def 函数名(参数):
函数体
return 语句
举例 定义⼀个新的函数,表达式是y = x² + x
# 提⽰:x ** y 表⽰ x的y次幂
def  fc(x):
y=x**2+x
return y
解释
第1⾏:def的意思是定义(define),math是【函数名】(⾃⼰取的),再搭配⼀个英⽂括号和冒号,括号⾥⾯
的x是参数(参数名也是⾃⼰取)。
第2⾏:def下⼀⾏开始缩进的代码就是函数要实现的功能,也叫【函数体】。这⾥的功能就是:根据x计算出⼀
个值y
第3⾏:return语句是返回的意思,可以指定函数执⾏完毕后最终会返回什么值或表达式,否则计算机是⽆法判
断出函数最终要输出什么结果的。
定义函数的语法并不难,但有些注意事项⼀开始要特别注意才能少踩坑,我将其标记在下⾯代码块的注释⾥,请你仔细阅读下
# 函数名:1. 名字最好能体现函数的功能,⼀般⽤⼩写字母和单下划线、数字等组合
#      2. 不可与内置函数重名(内置函数不需要定义即可直接使⽤)
def math(x):
# 参数:根据函数功能,括号⾥可以有多个参数,也可以不带参数,命名规则与函数名相同
# 规范:括号是英⽂括号,后⾯的冒号不能丢
y = x ** 2 + 5
# 函数体:函数的执⾏过程,体现函数功能的语句,要缩进,⼀般是四个空格
return y
# return语句:后⾯可以接多种数据类型,如果函数不需要返回值的话,可以省略
调⽤函数 输⼊函数名和参数所对应的值,这个过程在函数⾥叫作参数的传递(pass)
def math(x):
y =  x ** 2 + x
return y
a = math(10)
print(a)
输出结果:
110
解释:
math(10)的意思是将整数10赋值给参数x并运⾏该函数。函数执⾏完毕后最终返回了y的值即110,然后将这个
结果赋值给变量a,再⽤print()将变量a打印出来。
当然,你也可以只⽤⼀⾏代码print(math(10))来表⽰同样的意思。
举例 len()函数是Python的内置函数,功能之⼀是可以返回字符串的长度。我们可不可以⾃⼰写⼀个具有相同功能的函数呢?
实现思路: 1. 设置⼀个初始为0的计数器;2.遍历字符串,每遍历⼀次,计数器加⼀;3.返回计数器的值。
def my_len(words):
#函数的参数是字符串
y=0
for i in(words):
y=y+1
return y
print (my_len("三根⽪带,四⽄⼤⾖"))
输出结果:
9
参数类型
def opening():
print('⼀⼆三四五六七')
print('葫芦娃呀葫芦娃')
print('脑⽠疼啊脑⽠疼')
opening()
输出结果:
⼀⼆三四五六七
葫芦娃呀葫芦娃
脑⽠疼啊脑⽠疼
解释:
我们可以看到,这⾥定义了⼀个opening()函数,但是括号⾥没有带参数,原因是这个函数的功能是打印出固定
的三句话,不需要参数的参与。
需要强调的是,即便是没有参数,我们在调⽤函数的时候也不能省略括号,如此例中的opening()
在这个例⼦⾥,也不需要return语句,原因是这个函数直接在屏幕打印出内容,不需要返回值。事实上,没有
return语句的函数,Python也会在末尾隐性地加上return None,即返回None值
换句话说,有时候我们需要的只是函数的执⾏过程(⽐如打印内容),有时我们需要函数执⾏完毕的返回结果
多个参数的情况
def menu(appetizer, course):
print('参数1:' + appetizer)
random在python中的意思print('参数2:' + course)
menu('蛇⽪精','葫芦娃')
输出结果:
参数1:蛇⽪精
参数2:葫芦娃
解释:
这⾥的'蛇⽪精'和'葫芦娃'是对应参数的位置顺序传递的,所以appetizer和course被叫作【位置参数】,
当有多个参数的时候,我们就必须按照顺序和数量传递,这也是最常见的参数类型。
如果不按位置顺序传递,就会闹出乌龙。
def menu(appetizer, course):
print('参数1:' + appetizer)
print('参数2:' + course+'n')
#转义字符n,表⽰换⾏
menu('蛇⽪精','葫芦娃')
menu('葫芦娃','蛇⽪精')
#如果采⽤下⾯这种形式传递,就不需要理会参数位置
menu(course = '蛇⽪精', appetizer = '葫芦娃')
输出结果:
参数1:蛇⽪精
参数2:葫芦娃
参数1:葫芦娃
参数2:蛇⽪精
参数1:葫芦娃
参数2:蛇⽪精
如果⼀个函数的某个参数值总是固定的,那么设置默认参数就免去了每次都要传递的⿇烦。不过默认参数并不意味着不能改变
def menu(appetizer, course, dessert = '蝎⼦怪'):
print('参数1:' + appetizer)
print('参数3:' + course)
print('参数2:' + dessert)
menu('蛇⽪精','葫芦娃')
menu('蛇⽪精','葫芦娃','蛤蟆精')
#蛤蟆精对应参数dessert
输出结果:
参数1:蛇⽪精
参数3:葫芦娃
参数2:蝎⼦怪
参数1:蛇⽪精
参数3:葫芦娃
参数2:蛤蟆精
解释:
⼀个萝⼘⼀个坑,因为前两个位置参数已经有对应的值传递,Python会⾃动将'蛤蟆精'传递给参数dessert,
替换了默认参数的默认值。
下次更新...⼿困....
休息了两⼩时...继续更新...
我是全天下最帅的道长(*╹▽╹*)
深度练习
根据不同的使⽤环境 如果参数数量都不同,不能限定死数量,这时候【不定长参数】就能派上⽤场,即传递给参数的数量是可选的、不确定的。
它的格式⽐较特殊,是⼀个星号*加上参数名,它的返回值也⽐较特殊,我们来看看下⾯的例⼦。
def menu(*barbeque):
return barbeque
order = menu('烤鸡翅','烤茄⼦','烤⽟⽶')
#括号⾥的这⼏个值都会传递给参数barbeque
print(order)
print(type(order))
输出结果:
('烤鸡翅', '烤茄⼦', '烤⽟⽶')
<class 'tuple'>
解释:
你会发现函数返回的是这样的结果:('烤鸡翅', '烤茄⼦', '烤⽟⽶'),我们⽤type()函数可以知道这
种数据类型叫作元组(tuple)
注:元组的写法是将数据放在⼩括号()中,它的⽤法和列表⽤法类似,主要区别在于列表中的元素
可以随时修改,但元组中的元素不可更改
和列表⼀样,元组是可迭代对象,这意味着我们可以⽤for循环来遍历它,这时候的代码就可以写成:
def menu(*barbeque):
for i in barbeque:
print('⼀份烤串:' + i)
menu('烤⾹肠', '烤⾁丸')
menu('烤鸡翅', '烤茄⼦', '烤⽟⽶')
# 不定长参数可以接收任意数量的值
输出结果:
⼀份烤串:烤⾹肠
⼀份烤串:烤⾁丸
⼀份烤串:烤鸡翅
⼀份烤串:烤茄⼦
⼀份烤串:烤⽟⽶
可能⽬前我们不会怎么⽤到不定长参数,不过了解这⼀个概念可以帮助我们看懂⼀些函数⽂档
⽐如说我们最熟悉的print()函数,它完整的参数其实是长这样的:
print(*objects, sep = ' ', end = 'n', file = sys.stdout, flush = False)
objects带了*号,为不定长参数——这也是为什么print()函数可以传递任意数量的参数。其余四个为默认参数,可以看到第⼀个参数objects
我们可以通过修改默认值来改变参数,对⽐⼀下下列代码的输出结果。
print('⾦鱼', '三⽂鱼', '鲷鱼')
print('⾦鱼', '三⽂鱼', '鲷鱼', sep = '+')
# sep控制多个值之间的分隔符,默认是空格
print('⾦鱼', '三⽂鱼', '鲷鱼', sep = '+', end = '=?')
# end控制打印结果的结尾,默认是换⾏)
输出结果:
⾦鱼三⽂鱼鲷鱼
⾦鱼+三⽂鱼+鲷鱼
⾦鱼+三⽂鱼+鲷鱼=?
现在你明⽩了参数的不同形态,以后就可以视实际情况的需要,灵活设置不同的参数类型了
返回多个值
函数,不仅可以⽀持输⼊多个参数,⽽且也可以同时输出多个值吗。接下来,我们就来讲讲如何⽤return语句来返回多个值。
random.choice()函数来):
注:随机功能我们可以⽤random模块中的random.choice()
import random
#引⼊random模块
appetizer = ['话梅花⽣','拍黄⽠','凉拌三丝']
def coupon(money):
if money < 5:
a = random.choice(appetizer)
return a
elif 5 <= money < 10:
b = random.choice (appetizer)
return b, '溏⼼蛋'
print(coupon(3))
print(coupon(6))
可以看到:要返回多个值,只需将返回的值写在return语句后⾯,⽤英⽂逗号隔开即可。
return b
return '溏⼼蛋'
return '溏⼼蛋'永切记!我们不能写成上⾯这种两⾏的格式,是因为函数在执⾏过程中遇到第⼀个return语句就会停⽌执⾏,所以第⼆个return '溏⼼蛋'远不会被执⾏
接下来我们直接运⾏下列的代码,看看返回的结果是什么数据类型。
import random
appetizer = ['话梅花⽣','拍黄⽠','凉拌三丝']
def coupon(money):
if money < 5:
a = random.choice(appetizer)
return a
elif 5 <= money < 10:
b = random.choice (appetizer)
return b, '溏⼼蛋'
print(coupon(6))
print(type(coupon(6)))
输出结果:
('拍黄⽠', '溏⼼蛋')
<class 'tuple'>
<class 'tuple'>表⽰返回的数据类型⼜是我们刚才提到的元组。在这个例⼦中,该元组是由两个元素构成的。
元组和列表⼀样,可以通过索引来提取当中的某个元素,
举例:将元组中的两个元素分别打印出来

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。