python基础第三篇

来源:互联网 发布:百川环评工程师软件 编辑:程序博客网 时间:2024/06/10 12:15

python基础 (三)

真心觉得python这门语言是业界良心:

  • 函数语法与特性
  • 局部变量与参数
  • 返回值
  • 嵌套函数
  • 递归
  • 匿名函数
  • 高阶函数
  • 内置函数

一、函数语法与特性

函数:将一组语句的集合通过一个函数名封装起来,若想执行该函数,调用其函数名

一般语法:

def hello(*args,**kwargs):    ...    return ...

参数和返回值视情况而存在

特性:

  1. 减少重复代码
  2. 可扩展
  3. 易维护

二、 局部变量与参数

实参:在函数调用时,必须具有确定的值,以便传递给函数的形参,因此必须预先定义,可以是常量、变量、表达式、函数等

形参:只有在调用时才分配内存单元,结束后立即释放,因此只在函数内部有效

def test(x,y):#x,y是形参    return x+ya=test(w,z)#w,z是实参

下面介绍几种形参:

def actor_info(name,sex,magnum_opus,country="中国"):#country是默认参数    print("""    ----------{name} info-----------    姓名: {name}    性别: {sex}    代表作: {magnum_opus}    国籍: {country}""".format(name=name,sex=sex,magnum_opus=magnum_opus,country=country))actor_info("赵丽颖","女","花千骨")

1、位置参数

按顺序依依传入。

actor_info("赵丽颖","女","花千骨")

2、关键参数

当给函数传参数时不想按顺序来,那么可以用指定参数名的关键参数,关键参数一定要在位置参数的后面不然就乱了,代码中magnum_opus和sex就是关键参数,不用考虑自身位置。

actor_info("赵丽颖",magnum_opus="花千骨",sex="女")

3、默认参数

这里country就是默认参数,调用时不需指定,若指定了就是指定的值,默认参数可看作特殊情况的位置参数,必须放在最后不打扰其他参数。

actor_info("赵丽颖","女","花千骨")

4、非固定参数

如果函数定义时不明确要传入多少参数,那么使用非固定参数。

args:将多传入的位置参数构造成一个元组。

def actor_info(name,*args,country="中国"):    print("""    ----------{name} info-----------    姓名: {name}    性别: {sex}    代表作: {magnum_opus}    国籍: {country}""".format(name=name,sex=args[0],magnum_opus=args[1],country=country))actor_info("赵丽颖","女","花千骨")

**kwargs:将多传入的关键参数构造成一个字典。

def actor_info(name,*args,**kwargs):    print(name,args,kwargs)actor_info("赵丽颖","女",magnum_opus="花千骨",country="中国")#输出#赵丽颖 ('女',) {'country': '中国', 'magnum_opus': '花千骨'}

全局变量:在程序一开始就定义的变量称为全局变量,其作用域是整个程序
局部变量:在子程序中定义的变量称为局部变量,其作用域是定义该变量的子程序

局部变量:

age=48print("你几岁啊")def liar(age):    age=18    print("I am %s years old"%age)liar(age)print("其实真实年龄是%s"%age)

输出:

你几岁啊I am 18 years old其实真实年龄是48

因此当全局变量与局部变量同名时,在定义局部变量的子程序内,局部变量起作用,在其他地方都是全局变量起作用。

三、返回值

函数的执行结果可以用return语句返回。
pay attention please!

  1. 函数执行过程中遇到return语句立即停止并返回结果,表征函数的结束
  2. 若函数中未指定return,那么返回值为None

四 、嵌套函数

函数还能嵌套函数,嵌套的子函数不能被外部程序调用,它是局部变量

depth=3def yangcong():    depth=2    def yangcong2():        depth=1        print("你正在剥第%s层洋葱"%depth)    yangcong2()    print("你正在剥第%s层洋葱"%depth)yangcong()print("你正在剥第%s层洋葱"%depth)

输出:

你正在剥第1层洋葱你正在剥第2层洋葱你正在剥第3层洋葱

五 、递归

嵌套函数是在函数中调用其他局部函数,那么在函数中调用自身就是递归函数。

def cal(n):    if n==1:        return n    return n*cal(n-1)cal(5)#输出#120

主要特性:

  1. 必须有一个明确的结束条件
  2. 每次进入更深一层递归,问题规模比前一次有所减少
  3. 函数调用是通过栈来实现的,每执行一个函数调用就会增加一层栈,函数返回结束时会减少一层栈,因此递归调用次数过多,会引起栈溢出

递归函数还可用于对有序列表二分查找:

num_list=[2,5,7,9,12,15,19,25,29,36,38,46,89]def binary_search(num_list,num):    if len(num_list)>1:        mid=int(len(num_list)/2)        if num_list[mid] == num:            print("find it!")        elif num_list[mid]>num:            return binary_search(num_list[:mid],num)        else:            return binary_search(num_list[mid+1:],num)    else:        if num_list[0] == num:            print("find it!")        else:            print("真是找不到啊!")binary_search(num_list,9)#输出#find it!

六、匿名函数

匿名函数不要按照常规方式明确的取指定一个函数。

#常规定义def test(n):    return n*n#匿名函数定义test=lambda n:n*n

匿名函数需要和其他函数搭配使用,比如map函数:

data=map(lambda n:n*n,[5,4,6,3])for i in data:    print(i)#输出#25#16#36#9

七、高阶函数

函数定义的参数中包含一个指向函数的变量,那么这个函数称作高阶函数。

def square(n):    return n**2def sub(a,b,func):    return func(a)-func(b)sub(5,3,square)#输出#16

八、内置函数

python解释器内含许多函数和数据类型。

内置函数列表

具体参考python官方网页:https://docs.python.org/3/library/functions.html?highlight=built#ascii

原创粉丝点击