python语法进阶

函数:

1.函数定义:

def 函数名(参数1,参数2,...):
    执行代码
    返回值
函数名(参数1,参数2...)#通过方法进行调用

1.1 形参

1.1.1 默认形参:

  • 默认参数不能放首位

  • 传入参数数量不足时,后面的参数使用默认值 

1.1.2 位置形参

def 函数名(形参名1, 形参名2, ...):
    pass

1.1.3 星号元组形参 

  • 将位置实参合并为一个元组

  • 通用写法 *args

  • def foo(*args)
        print(*args)
    foo(1,2,3)

1.1.4 双星号字典形参

  • 通用写法 **args

  • def foo(**kwargs)
        print(kwargs)
    foo(a=1,b=2,c=3)

1.1.5 命名关键字形参 

def fun04(*args,a,b,c):
    print(args)
    print(a)
    print(b)
    print(c)

fun04(args1,2,3,a=4,b=5,c=6)

PS:两种星号形参常用于不确定传入的参数时 

1.2 实参

1.2.1 位置实参

序列实参 :将序列拆分后,依次传入参数

list01=[1,2,3]
foo(*list01)
def foo(a,b,c):
    print(a)
    print(b)
    print(c)

foo(a,b,c)

 1.2.2 关键字实参

字典实参:将字典拆分后,依次传入参数

dict01={1,2,3} 
foo(**dict01)
def foo(a,b,c):
    print(a)
    print(b)
    print(c)

foo(a=2,b=3,c=3)

PS:当两种实参护混合使用时,位置实参必须放在关键字实参之前

1.3 可变和不可变变量

1.3.1 可变变量

 定义:变量值能被修改的变量

可变变量类型有:列表、字典、结合等

1.3.2 不可变变量

定义:变量值不能被修改的变量

不可变变量类型有:整数、字符串、元组、空值、布尔值等

1.4 函数返回值 

 返回值:函数执行的结果,无返回值时,结果为空值

return 表达式

匿名参数

- 语法

  lambda  [函数的参数列表]: 表达式

- 作用

  创建一个匿名函数对象
  lambda是关键字,表示你正在定义一个匿名函数。
  同 def 类似,但不提供函数名
  [函数的参数列表]`是函数的参数,可以有零个或多个参数,参数之间用逗号分隔。
  : 表达式是函数的返回值,通常是一个表达式,匿名函数会计算这个表达式并返回结果。

- 说明

  lambda 表达式 的创建函数只能包含一个表达式

 

1.5 变量作用域

1.5.1 定义

一个变量声明以后,在哪里能够被访问使用,就是这个变量"起作用"的区域:也就是这个变量的作用域

一般来说,变量的作用域,是在函数内部和外部的区域 来体现,因此常常与函数有关。

1.5.2 全局变量

  • 定义在函数外部,模块内部的变量称为全局变量

  • 全局变量, 所有的函数都可以直接访问(取值,但函数内部不能直接将其赋值改变)

  • 全局变量控制:gloabl 修改全局变量

1.5.3 局部 变量

  • 定义在函数内部的变量称为局部变量(函数的形参也是局部变量)

  • 函数内部的变量只能在函数内部或者函数内部的函数内部访问 ,函数外部不能访问

  • 局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁

  • 局部变量控制:nonlocal 修改局部变量

1.6 内存分配

1、将函数的代码存储到代码区,函数体中的代码不执行。

2、调用函数时,在内存中开辟空间(栈帧),存储函数内部定义的变量。

3、函数调用后,栈帧立即被释放。

 

1.7 函数递归

定义:函数直接或间接调用自己 

# 函数直接的调用自身
def f():
    f()  # 调用自己
    # 此递归达最大深度出错
# f()
print("递归完成")

# 函数间接的调用自身
def fa():
    fb()
def fb():
    fa()
fa()
print("递归完成")

说明:

  • 递归一定要控制递归的层数,当符合某一条件时要终止递归调用

  • 几乎所有的递归都能用while循环来代替

递归的实现方法:

  • 先假设此函数已经实现

递归优缺点:

  • 优点:

    • 递归可以把问题简单化,让思路更为清晰,代码更简洁

  • 缺点:

    • 递归因系统环境影响大,当递归深度太大时,可能会得到不可预知的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值