前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础:Python函数eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Python基础:Python函数eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

作者头像
py3study
发布2020-01-08 15:17:11
9490
发布2020-01-08 15:17:11
举报
文章被收录于专栏:python3python3

一、函数是python中使用最高的对象。

        函数定义的简单规则 :

        1、用def定义,接着是函数名和参数和冒号,格式:

        2、函数内部代码块需要缩进

        3、使用return返回函数值,默认返回值是None

        格式:

                    def 函数名(参数) :       

                        代码块

                        return                #可有可无,也可以在代码块任意位置使用

二、函数中return的使用:

        return可以在函数的任何地方使用,直接跳出当前函数,忽略其它代码块。     

# return也可以不带参数,返回的是None

# 也可以没有return,返回的也是None

# return也可以返回字典,列表,函数(装饰器就是返回的函数代码块)。

        1、可以跳出if,while,for等语句

def use_return():
    i = 0
    while True:
        i += 1
        for j in range(i):
            print(j, end='')
            
            if j == 5:
                return j
            
        print()

use_return() 

# 运行结果:i等于5时会直接结束函数
"""
0
01
012
0123
01234
012345
"""

                上面的函数改变一下调用方式:

print(use_return())            # 最后一行0123455,最后一个5就是返回函数的值,也就是j的值。尝试把最后一个5换行。

        2、调用函数:

             使用函数名和括号调用函数。不带括号调用的是函数体,相当于起个别名。

# 使用上面的例子
# 调用1
if use_return() == 5:
    print(5)

# 调用2
for i in range(0,use_return()):                
    print(i)
#不能使用,因为use_return()返回的是数字,但不是int型,必须先赋值给变量,然后调用变量
v = use_return()
for i in range(0,v):                
    print(i)
    
# 调用3
s = use_return()
print(s)

# 调用函数体
func = use_return
print(func)                        # 打印的是use_return函数所在的内存地址
func()                             # 运行use_return函数

三、函数变量与外部变量的关系:

        1、可更改(mutable)与不可更改(immutable)对象

            strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

        2、不可变类型:

            # 变量赋值 a=5 后再赋值 a=10,不是a的值变了,变量相当于指针,只是指针指向变了,5本身没有改变,指向的10是一个新地址,而不是把5变成10.

            # 不可变类型传入函数内,函数修改后,不会影响外部变量值。

        3、可变类型:

            # 变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 ,虽然la指向的内存地址没变,但是内部的值变了,所以是可变的。

            # 可变类型传入函数内的是la的本身,所以,在函数内修改la[2],也改变了函数外的la[2]

def modify_la2(la_value):
    la_value[2] = 99999

la = [0, 1, 2, 3, 4, 5]
modify_la2(la)
print('la = %s' % la)
# 运行结果
la = [0, 1, 99999, 3, 4, 5]

        4、函数变量寻找由最内层向外层找

def modify_la2():
    la[2] = 99999

la = [0, 1, 2, 3, 4, 5]
modify_la2()
print('la = %s' % la)
#modify_la2找不到la,则找函数外面的la,la必须写在调用的modify_la2()前面

五、函数的参数传递形式:   

        1、必需参数:调用函数时,按变量的顺序写对应的值

        2、关键字参数:调用函数时,使用变量名赋值,变量=值

        3、默认参数:定义函数时参数带值,def user(name, age=20): ,age=20就是默认参数

        4、不定长参数:

            # (*args)不定长参数,只能接收必须参数,把参数转换成list存储 

            #(**kwargs)不定长参数,只能接收关键字参数,并把参数转换成词典存储

        5、参数存在的顺序:

            必需参数,默认参数,*args, **kwargs

            def modify_la2(name, age=20, *args, **kwargs):

            #age默认参数不起作用,必须被赋值。

def modify_la2(name, age=20, *args, **kwargs):
    print('name=', name)
    print('age=', age)
    print('args=', args)
    print('kwargs=', kwargs)

modify_la2('dage', 'men',175, skill='pain', father='Adw')
# 运行结果
name= dage
age= men
args= (175,)
kwargs= {'father': 'Adw', 'skill': 'pain'}

 六、匿名函数lambda      

        lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。 

        lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

        格式:

                lambda [arg1 [,arg2,.....argn]]:expression

#梯形面积公式:
resault = lambda x1, x2, h: (x1 + x2)*h/2

print(resault(1, 2, 4))

七、小结:

函数是完成某一个功能的代码集合。 函数名和变量名一样,都是指向内存的地址,而指向的内存存储就是函数的代码。 函数名()则是调用函数返回结果;只有函数名没有括号,调用的是函数本身。

没有return定义返回,默认返回None。 把某一功能定义成函数,重复调用减少代码量。 定义函数也可以达到批量修改的效果,只修改函数,所有调用都发生改变。 函数是python中使用最高的对象。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档