python中的函数

所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用

函数的使用包含两个步骤

    1.定义函数--封装独立的功能
    2.调用函数--享受封装的成果

函数的作用:在开发时,使用函数可以提高编写的效率以及代码的重用‘’

函数:

函数是带名字的代码块,用于完成具体的工作
需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该
任务的函数,让python运行其中的代码,你将发现,通过使用函数,程序编写,阅读,测试
和修复都将更容易

定义函数

def 函数名():
函数封装的代码
1.def是英文define的缩写
2.函数名称应该能够表达函数封装代码的功能,方便后续的调用
3.函数名称的命名应该符合标识符的命名规则
可由字母,下划线和数字组成
不能以数字开头
不能与关键字重名

参数的作用

函数,把具有独立功能的代码块组织成为一个小模块,在需要的时候调用
函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据
1.在函数内部,把参数当作变量使用,进行需要的数据处理
2.函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过
参数传递

形参和实参

形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的

函数中的注释

在函数下加”“”“”“添加多行注释
点击函数定义处的函数名,出现灯泡后选择insert documentation string stub,即可添加你想要添加的注释内容
在函数写好后,在调用函数时将鼠标放到函数名处,ctrl + q 查看函数用法

函数的返回值(return)

在程序开发中,有时候,会希望一个函数执行结束后(举例子:温度计函数,要返回给我>们当前的温度),告诉调用者一个结果,以便调用者针对具体的结果作出后续的处理
返回值是函数完成工作后,最后给调用者的一个结果
在函数中使用return关键字可以返回结果
调用函数一方,可以使用变量来接收函数的返回结果

def sum_2_sum(num1,num2):
    """对两个数字求和"""
    result = num1 + num2
    return result
    num = 1000
    print num
sum_result = sum_2_sum(10,7)
print sum_result
###return表示函数的返回结果,在retrun后边的代码不会执行

这里写图片描述
注意:当函数的参数个数不确定时,可以用*n来代替

函数的嵌套调用

在进行函数调用时,可以将几个函数嵌套使用

#3.定义一个函数能够打印任意重复次数的分隔线
def  print_line(char,times):
    print char * times
#4.定义一个函数能够打印5行分隔线,
#分隔线要求需满足要求3
def print_lines(char,times):
    """打印多行分隔线
    :param char:分隔线使用的分隔符
    :param times:分隔线重复的次数
    """
    row = 0
    while row<5 :
        print_line(char,times)
        row +=1
print_lines('$',30)

这里写图片描述

import导入函数包

格式:import + 文件名(不用加.py)

fun1函数:
def num_2_num(num1,num2):
    result = num1 + num2
    #print result
    return result

func4函数:
def  print_line(char,times):
    print char * times
def print_lines(char,times):
    """打印多行分隔线
    :param char:分隔线使用的分隔符
    :param times:分隔线重复的次数
    """
    row = 0
    while row<5 :
        print_line(char,times)
        row +=1

func5函数用import导入使用:
import func_04
import fun_01
func_04.print_lines('$',60)
a = fun_01.num_2_num(10,20)
print a

这里写图片描述

局部变量和全局变量

局部变量是在函数内部定义的变量,只能在函数内部使用
全局变量是在函数外部定义的变量,(没有定义在某一个函数内),所有函数内部都可以使
用这个变量

局部变量

局部变量是在函数内部定义的变量,只能在函数内部使用
函数执行结束后,函数内部的局部变量,会被系统回收
不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响

局部变量的作用

在函数内部使用,临时保存函数内部需要使用的数据

def demo1():
#定义一个局部变量
    demo_num = 10
    print demo_num
def demo2():
#不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响
    demo_num = 20
    print demo_num
demo1()
demo2()
def demo1():
    #定义了一个局部变量
    #出生:执行了下方的代码后,才会被创建
    #死亡:函数执行完后
    num = 8
    print num
def demo2():
    #demo1中定义的局部变量,不能在其他函数中使用
    print num
demo1()
demo2()

定义一个全局变量:

1)在函数中定义一个和全局变量同名的局部变量,相当于临时修改全局变量的值
num = 10
def demo1():
    #使用赋值语句,会在函数内部,定义一个局部变量
    num = 99
    print 'demo1=====> %d' % num
def demo2():
    print 'demo2=====> %d' % num
demo1()
demo2()

这里写图片描述

2)
num = 10
def demo1():
    #希望修改全局变量的值,使用global关键字,声明一下变量即可
    #global 关键字会告诉解释器后面是一个全局变量
    #再用赋值语句时,就不会创建局部变量了
    global num
    num = 99
    print 'demo1=====> %d' % num
def demo2():
    print 'demo2=====> %d' % num
demo1()
demo2()

这里写图片描述

变量的引用

    变量和数据都是保存在内存中的
    在python中函数的参数传递以及返回值都是靠引用传递的

引用的概念

在python中
变量和数据是分开存储的
数据保存在内存中的一个位置
变量中保存的是数据在内存中的地址
变量中记录数据的地址,就叫做引用
使用id()函数可以查看变量中保存数据所在内存的地址

def test(num):
    print '在函数内部 %d 对应的内存地址是 %d' %(num,id(num))
#定义一个字符串变量
    result = 'hello'
    print '函数要返回数据的内存地址 %d' %id(result)
    return result

#1.定义了一个数字变量
a=10
print 'a 变量保存数据内存的地址是 %d' %id(a)
r = test(a)
print '%s 的内存地址是 %d' %(r,id(r))

这里写图片描述

函数中的装饰器

装饰器:把一个函数当作参数,传递给函数,返回一个加强版的函数。本质上是在不改变原函数
的基础上,给函数增加功能。
def func1():
    print 'have a happy day!'
#需求:让func1函数的执行结果前加一串$,
#但不改变原函数
def func2():
    print 'good'
#outer()就相当于是一个“化妆师”
#将传递进来的参数“化妆”,然后返回“化妆好的函数”
#这里为什么要有一个形参:因为“化妆师”可以给每个人画状
def outer(func):
    def inner():
        print '$$$$$$$$$'
        func()
        #将装饰好的参数返回
    return inner
f = outer(func1)
# outer函数调用func1,对func1进行功能的添加,即装饰
f()
# f的作用是接受函数的返回值,即装饰过的func1,即inner
q = outer(func2)
q()

这里写图片描述
函数装饰器的常用写法:
先写装饰器,再写要装饰的函数

def outer(func):
    def inner(age):
        if age < 0:
           age = 0
        func(age)
    return inner
@outer
def say(age):
    print 'woman is %d years old' % age
say(-3)
如果函数有返回值,利用装饰器怎样获取函数的返回值
def outer(func):
    def inner(num1,num2):
        print '$$$$$$$$$'
        ###在装饰器中先接受值,再返回
        result = func(num1,num2)
        print '&&&&&&&&&'
        return result
    return inner
@outer
def func1(num1,num2):
    result = num1 + num2
    return result
response = func1(2,3)
print response

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值