python 语法

参数传递

a = [12,34,45]
a = 12
a = "23424"

以上代码中,[12,34,45] 是一个List对象,12是一个Number对象, “23424” 是一个字符串对象,而变量a没有类型,它仅仅是个对象的引用,它可以指向任何类型的对象,相比于 c++ 语法,python 中的变量相当于 c++ 中一个变量的 智能引用,它不需要申明引用的类型,且可以随时转变。

可更改与不可更改对象

在python中,strings,tuples,和numbers是不可更改对象,list,dict,set是可以修改的对象。

  • 不可更改类型: 变量赋值a = 5后再赋值a=10,这里实际生成一个int值对象10,再让a指向它,而5被丢弃,不是改变a的值,而是新生成了a。
  • 可变类型:变量赋值la=[1,2,3,4]后再赋值la[2]=5是将la中的第三个元素值更改,la本身的地址没有变,只是修改了一部分值。

函数的参数传递

  • 不可更改类型:类似c++的按值传递
  • 可更改类型:类似c++的按引用传递

python中一切都是对象,严格来说不能说按值传递还是按引用传递,而是传不可变对象和传可变对象。

作用域

变量的访问

  • Local 局部作用域
  • Enclosing 闭包函数外的函数中
  • Global 全局作用域
  • Built-in 内置作用域

变量的访问按以上排列顺序查找。

g_count = 0  # 全局作用域
def outer():
    o_count = 1  # 闭包函数外的函数中
    def inner():
        i_count = 2  # 局部作用域

Python中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域。其他的代码块(if、try、for、while等)不会引入作用域。

变量的修改

注意如果想在内部作用域修改外部作用域的变量时,需要用到globalnonlocal

num = 1
def fun1():
    global num  # 需要使用 global 关键字声明,才可以在局部作用域内修改全局变量num
    print(num) 
    num = 123
    print(num)
fun1()
print(num)
def outer():
    num = 10
    def inner():
        nonlocal num   # nonlocal关键字声明,才可以在局部作用域内修改闭包函数外的函数中的变量
        num = 100
        print(num)
    inner()
    print(num)
outer()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值