python教程:函数快速入门
函数的定义和使用
def test(x): # x代表形参
"""
2*x+1
:param x:整形数字
:return:返回计算结果
"""
y = 2*x+1
return y
p = test(3) # test()表示运行名为test函数,3代表实参,给x进行赋值
print(p)
函数的定义:
- def: 表示函数的关键字
- 函数名: 函数的名称, 根据函数名调用函数
- 函数体: 函数中进行一系列的逻辑计算
- 参数: 为函数执行完毕后, 可以给调用者返回数据
一. 为什么要用函数?
- 减少代码量
- 保持一致性
- 易维
二. 函数的参数
函数有三种不同的参数:
普通参数
######### 定义函数 #########
# name 叫做函数func的形式参数,简称:形参
def func(name):
print name
# ######### 执行函数 #########
# "wupeiqi" 叫做函数func的实际参数,简称:实参
func("wupeiqi")
默认参数
def func(name, age = 18):
print "%s:%s" %(name,age)
# 指定参数
func("wupeiqi", 19)
# 使用默认参数
func("alex")
注:默认参数需要放在参数列表最后
动态参数 *args
def func(*args):
print args
# 执行方式一
func(11,33,4,4454,5)
# 执行方式二
li = [11,2,2,3,3,4,54]
func(*li)
动态参数 **kwargs
def func(**kwargs):
print args
# 执行方式一
func(name="wupeiqi",age=18)
# 执行方式二
li = {"name":"wupeiqi", age:18, "gender":"male"}
func(**li)
三. 函数的变量
函数的变量可分为 全局变量和局部变量
全局变量(大写)
定义:没有缩进的变量
局部变量(小写)
定义:子程序下定义的变量
name = "lhf" # 这里就指全局变量
def change_name():
name = "帅了一比" # 这里就指局部变量
print("change_name", name)
change_name()
print(name)
#结果
change_name 帅了一比
lhf
global和nolocal
global声明是全局变量,nolocal指定上一级变量
未声明全局变量
x = 99
def func():
x = 88
func()
print(x) #输出99
声明全局变量
x = 99
def func()
global x
x = 88
func()
print(x) #输出88
未指定上一级变量
def func():
count = 1
def foo():
count = 12
foo()
print(count)
func() #输出1
指定上一级变量
def func():
count = 1
def foo():
nonlocal count
count = 12
foo()
print(count)
func() #输出12
四. 递归函数
ps: 用的好的都是大牛~
就是函数自己调用自己
特性:
-
必须有一个明确的结束条件,
-
每次进入深一层递归时,问题规模都应有所减少
"""
学习中遇到问题没人解答?小编创建了一个Python学习交流群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
"""
def calc(n):
print(n)
if int(n / 2) == 0:
return n # 当上面的条件成立后一个真值,返回到函数
res = calc(int(n / 2))
print(n,res)
return res # 返回res的值,要将真值一层一层传递回去
calc(10)
五. lamabda匿名函数
lambda用法,冒号之前的是入参,冒号之后的是表达式,返回的值,最简单的函数
print [(lambda x:x*x)(x)for x in range(11)]
#结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print (lambda x:x*x)(3)
#结果:9
g=lambda x:x*x
print g(4)
#结果:16