一 函数介绍
如果在开发程序时,需要多次调用某一部分代码,但是为了提高代码的编写效率以及代码的重用,所以把具有独立功能的代码组织为一个小模块,这就是函数
二函数的定义及调用
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,不带表达式的return相当于返回 None。
'''
def 函数名称
函数体
'''
注意事项
函数的命名要遵循标识符的命名规则,使用下划线命名法
函数体都是靠强缩进来表示的
函数只有在调用的时候才会执行,之创建不调用是不会执行的
调用格式
def 函数名
#建立一个say_hello 函数
def say_hello():
print('hello python')
print('hello yjs')
print('hello java')
#调用函数
say_hello()
print('程序结束了')
结果:
hello python
hello yjs
hello java
程序结束了
注意事项
1函数只有先创建,后调用
2一般情况下,不要将调用函数放到函数体里面
3函数可以多次调用
函数的注释
在函数体的第一行使用多行注释,对函数的功能进行解释说明
调用函数的时候,可以使用ctrl+q 可以查看函数的的解释说明,从而了解函数的功能
def say_hello():
"""
这是一个打招呼的方法
你好世界,你好云计算 你好java
"""
print('hello python')
print('hello yjs')
print('hello java')
say_hello()
3 带参数的函数
需求 定义一个求和参数
def sum_num():
num1 = 10
num2 = 20
num3 = num1 + num2
print(num3)
sum_num()
这个函数只能求出10+20的值,扩展性不高
函数的参数
格式如下
def 函数名称(参数1,参数2,.....)
...函数体...
说明:
1注意小括号里面的变量名就是函数的参数,多个参数使用逗号“,”隔开
2函数调用几个参数,调用函数的时候,就必须传递对应参数的个数
3 当以的参数,叫他形参--->形式参数
调用函数的时候的参数叫做实参 --->实际参数
def sum_num(aa,bb): #aa bb 叫做形参
num1 = aa
num2 = bb
num3 = num1 +num2
print(num3)
# 调用函数
sum_num(5,6) # 5 6 叫做实参
sum_num() 报错因为没有传递实参
函数参数的类型
不可变类型参数:整数、字符串、元组。
fun(a) 内部修改a的值,只是修改另一个复制的对象,不会影响a本身
可变类型:列表,字典。
如fun(la),则是将la真正的传过去,修改后的fun外部的la也会受到影响
不可变数据类型
a = 10000
print('a标量的id值--->',id(a))
def num(b):
print(b) # a和b的地址相同,因此值也是相同的
b = 200
print('修改后的b的id值--->', id(b))
print(b)
num(a)
'''
a标量的id值---> 7459696
10000
修改后的b的id值---> 490814384
200
'''
可变数据类型
print('outter_list',outter_list,id(outter_list))
def func(inter_list):
print('inter_list',inter_list,id(inter_list))
inter_list.append(4)
print(inter_list)
func(outter_list) #传递的是一个地址,所以才会变
print(outter_list)
"""
st [1, 2, 3] 12221320
inter_list [1, 2, 3] 12221320
[1, 2, 3, 4]
[1, 2, 3, 4]
"""
函数的返回值
格式
def 函数名(参数1,参数2,..........)
return 值
注意 1 在函数体的最后一个使用,关键字return 要返回的值
2 如果一个函数没有返回值,默认返回None
3 return有两个作用,一个是返回值,另一个是结束函数,可以结束整个方法
def sum_num(aa,bb):
num3 = aa+bb
print(id(num3))
ret = sum_num(1,2) #定义一个变量ret,来接受函数的返回值,赋值给变量
print(ret,id(ret))
拿到返回值后可以进行逻辑操作
例如:
if ret < 10:
pass
else:
pass
def func(c):
print('func...')
a = 10
b = c
if b < a:
return #可以结束整个方法
print('zzz')
print('xxxx')
func(11)
print('程序结束了')
结果:
func...
zzz
xxxx
程序结束了
返回None
返回None
def func():
print('func....')
ret = func()
print(ret)
结果 func....
None
返回多个值
格式
def fun():
a = '10'
b = '20'
return a,b
ret = fun()
print(ret) #多个值被组织成一个元组返回
因为可以用多个变量来接受元组中的内容 因此
num1,num2 = fun()
print(num1,num2,type(num1),type(num2))
结果:
('10', '20')
10 20 <class 'str'> <class 'str'>
注意:
1如果函数不写返回值,默认返回值None
2 return关键字有两个作用,一个是返回内容,另一个是结束此方法
3 return关键字后面不允许在写代码