Python函数和面向对象,小白看了都说好
python除了使用内置函数以外,还可以自定义函数。我们为什么要定义和使用函数呢?
下面我举个例子,比如我想求10的阶乘
# 求10的阶乘
m = 1
for i in range(1, 11):
m *= i
print(m)
代码虽然不长,但是如果我还想求20,21,55,100的阶乘呢?按照上面的方式求几个数的阶乘就要写几个循环,这样我们也能得到想要的答案,但代码是不是显得’难看‘。这时候我们就可以定义一个函数,以后求阶乘只需要调用这个函数就行了。
# 求n的阶乘
def fac(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
fac(8) # 8的阶乘
fac(25) # 25的阶乘
fac(63) # 63的阶乘
fac(100) # 100的阶乘
是不是感觉很方便呢?接下来给大家介绍一下函数用法
定义函数
定义一个python函数,下面是函数的基本形式:
def 函数名(参数1,参数2,…,参数n):
函数体
return 返回值
我们可以看到python用def来定义一个函数,后面有函数名和英文括号(括号里面可以定义一些参数,参数可以根据具体需求设置,也可以没有参数,参数还可以设置默认值)。下面return可以返回一个值,这个值有时任何形式的数据,当然也可以没有返回值。
接下来是一些实例:
实例1:
def hello_world():
return 'hello, world'
print(hello_world()) # hello, world
实例2:
def hello(name):
print(f'你好,{
name}')
hello('百里守约') # 你好,百里守约
实例3:
# 多个数累加
def add(nums):
sum = 0
for n in nums:
sum += n
return sum
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(add(nums)) # 55
函数的返回值
return:返回值,如果没有则默认返回None
实例:
def num() :
s = 10
return s
def num2():
s = 10
a = num()
b = num2()
print(a, b) # 10 None
实例:
s = 'hello, 张三'
return s
def hello2():
print('hello, jack')
a = hello()
print(a) #hello, 张三
b = hello2() #hello, jack
函数参数
函数可以设置参数,也可以不设置参数,可以设置一个参数,也可以设置多个参数,同时函数也可以设置默认值。
实例:
import random
# 摇色子
def roll_dice(n=2):
"""摇色子
:param n: 色子个数,默认两个色子
:return: 返回色子的总点数
"""
# points 表示总点数
points = 0
for _ in range(n):
points += random.randrange(1, 7)
return points
print(roll_dice()) # 默认值为2,摇两个色子,没有默认值调用函数时必须传入参数值
print(roll_dice(3)) # 传入参数3,此时n=3,表示摇3个色子
实例:
def BMI(high, weight, sex):
"""
体质指数计算
:param high:身高 ,单位:米
:param weight:体重,单位:千克、公斤
:param sex:性别,男:1,女:0
:return: 返回体质指数
"""
bmi = weight / high ** 2
if sex == 0:
bmi -= 1.1
if bmi < 19:
print('体重偏轻')
elif 19 <= bmi < 25:
print('健康体重')
elif 25 <= bmi < 30:
print('超重')
elif 30 <= bmi < 39:
print('严重超重')
else:
print('极度超重')
return weight / high ** 2
print(BMI(1.6, 50, 1))