python - 函数的定义和使用

函数的定义和使用

1 def test(x): # x代表形参
2 '''
3 2x+1
4 :param x:整形数字
5 :return:返回计算结果
6 '''
7 y = 2
x+1
8 return y
9 p = test(3) # test()表示运行名为test函数,3代表实参,给x进行赋值
10 print(p)

函数的定义:

  • def: 表示函数的关键字
  • 函数名: 函数的名称, 根据函数名调用函数
  • 函数体: 函数中进行一系列的逻辑计算
  • 参数: 为函数执行完毕后, 可以给调用者返回数据

一. 为什么要用函数?

  1. 减少代码量
  2. 保持一致性
  3. 易维

二. 函数的参数

函数有三种不同的参数:

  • 普通参数
    # ######### 定义函数 #########

    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: 用的好的都是大牛~

就是函数自己调用自己

特性:

  1. 必须有一个明确的结束条件,

  2. 每次进入深一层递归时,问题规模都应有所减少

    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:xx)(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

posted @ 2019-02-04 16:33  孔辉  阅读(1238)  评论(0)    收藏  举报