函数是什么

函数是组织好的、可以重复使用的、用来实现单一功能的代码

在先前课堂中我们已经接触过Python的内置函数,例如实现打印功能的print()函数

print()是设定好可以直接使用(组织好的),打印什么参数都可以(重复使用),而print()函数能实现的单一功能就是打印。

定义和调用函数

定义函数

实例

# 函数名:最好是取体现函数功能的名字,一般用小写字母和但下划线、数字组合

def greet(name):

# 参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名鬼册与函数名相同

# 规范:括号是英文括号,后面的冒号不能丢

print(name+'早上好')

# 函数体:函数体就是体现函数功能的语句,要缩进,一般是四个空格

return

运行实例,会发现终端是空白。那是因为我们只定义了函数

注:

def的意思是定义(define)

greet是函数名(自己取的)

name是参数

def下一行开始缩进的代码是函数体

函数内部一旦遇到return语句,就会停止执行并返回结果

调用函数

调用函数就是输入函数名和参数对应的值

实例

def greet(name):

print(name+'早上好')

return

greet('one') # 调用函数,参数one

greet('Python') # 调用函数,参数Python

输出结果

one早上好

Python早上好

参数可以是多个,或者没有的情况

def greet1():

print('早上好')

def greet2(name, day):

print(name+day+'早上好')

greet1()

greet2('one','星期一')

输出结果

早上好

one星期一早上好

函数重要概念

参数类型

参数类型有:位置参数、默认参数、不定长参数

我们通过一个案列把这些参数串起来

实例

# 位置参数

def introduce(name, age):

print('名字:' + name)

print('年龄:' + age)

introduce('one', '18') # '18'是字符串,如果用整型18作为参数会报错

输出结果

名字:one

年龄:18

注:'小数先生'和“18’是对应参数nama和age的位置顺序传递的,所以叫做位置参数

这个函数用了一段时间感觉信息不过全面,想给每个人添加所在城市。假设目前大多数人都是在行数,这时就可以用到默认参数。

实例

# 默认参数

def introduce(name, age, city='杭州'):

print('名字:' + name)

print('年龄:' + age)

print('城市:' + city)

introduce('one', '18')

输出结果

名字:one

年龄:18

城市:杭州

注:一个参数的值是相对固定的,那么设置默认参数就免去了每次都要传递的麻烦。

默认参数是可以被改变的

实例

def introduce(name, age, city='杭州'):

print('名字:' + name)

print('年龄:' + age)

print('城市:' + city)

introduce('one', '18', '东海')

输出结果

名字:小数先生

年龄:18

城市:东海

又过了一段时间,感觉信息还是不够全面,想加上个人爱好,不过每个人兴趣爱好(数量)都不同,这时就可以用到不定长参数。

格式:一个星号 * 加上个参数名

实例

def introduce(name, age, *hobby, city='杭州'):

print('名字:' + name)

print('年龄:' + age)

print('城市:' + city)

for i in hobby:

print('爱好:' + i)

introduce('one', '18', 'Python', 'piece')

输出结果

名字:one

年龄:18

城市:杭州

爱好python

爱好piece

注:默认参数要放在不定参数(*hobby)的后面

return语句

return是返回值,当输入参数给函数,函数就会返回一个值给你

实例

name = 'one'

print(len(one))

输出结果

3

注:当把参数name放进len()函数中,返回来的是4这个值(字符串的长度),然后用print函数打印出来

自定义函数,可以用return语句规定该函数要返回什么值

实例

def greet(age):

if age < 12:

return '祖国的花朵'

elif age < 25:

return '小鲜肉'

else:

return '我想在活500年'

print(greet(18)

输出结果

小鲜肉

注:return只是将指定数据返回,但不会打印,是由print()函数打印出来的

return特征

a.如果不是立即要对函数返回值做操作,那么可以使用return语句保留返回值

实例

def face(name):

return name + '的脸蛋'

def body(name):

return name + '的身材'

print('我的梦中情人:' + face('李若彤') + '+' + body('林志玲')

输出结果

我的梦中情人:李若彤的脸蛋+林志玲的身材

b.需要多次调用函数时,可以在定义一个注函数main(),调用非主函数的返回值

实例

def face(name):

return name + '的脸蛋'

def body(name):

return name + '的身材'

def main(dream_face, dream_body):

return '我的梦中情人:' + face(dream_face) + '+' + body(dream_body)

print(main('李若彤', '林志玲'))

输出结果

我的梦中情人:李若彤的脸蛋+林志玲的身材

运行过程

c.Python的函数返回值可以是多个,多个返回值的数据类型是元组(tuple)

实例

def lover(name1, name2):

face = name1 + '的脸蛋'

body = name2 + '的身材'

return face, body

a = lover('李若彤', '林志玲')

print(a)

输出结果

('李若彤的脸蛋', '林志玲的身材')

d.没有return语句的函数会默认返回None值。

实例

# 第一个函数

def fun():

a = 'I am coding'

print(fun())

# 第二个函数

def fun():

a = 'I am coding'

return a

print(fun())

输出结果

None

I am coding

e.一旦函数内部遇到return语句,就会停止执行并返回结果

实例

def func():

return 'Moring'

return 'None'

print(func())

输出结果

Moring

变量作用域

a.在一个函数内定义的变量仅能在函数内部使用(局部作用域),被称为局部变量

b.在所有函数之外的赋值的变量,可以在程序的任何位置使用(全局作用域),称作全局变量

实例

x = 99 # 全局变量x

def num():

x = 99 # 局部变量x

print(x)

num()

# 打印局部变量x

print(x)

# 打印全局变量x

输出结果

88

99

注:虽然变量的名字相同(x),但因为全部变量和局部变量处在不同的作用域,所以互不干扰,建议局部变量和全局便两个不要取相同的名字

函数内:局部作用域

函数外:全局作用域

全局作用域的代码中不能使用任何局部变量

实例

def egg():

quantity = 108

egg()

print(quantity)

注:输出结果会报错,变量quantity没有被定义

作者:one