Python语法进阶

本文主要介绍了Python的进阶语法,包括引用、局部变量和全局变量、函数的多个返回值、可变参数和不可变参数、缺省参数、多值参数、元组和字典的拆包以及递归函数的概念和用法。通过这些内容,有助于深化对Python编程的理解,为更复杂的编程任务打下基础。
摘要由CSDN通过智能技术生成

前言

从今天开始,我就不用“学习之路”这个标题了,感觉突出不了重点,都没啥人看啊!前面我们已经学习了Python的基础语法,了解了Python的分支结构,也就是选择结构、循环结构以及函数这些具体的框架,还学习了列表、元组、字典、字符串这些Python中特有的数据结构,还用这些语法完成了一个简单的名片管理系统。下面我就将介绍一下Python的一些进阶语法规则,为后面更复杂的编程打下基础。

引用

引用这个名词相信学过C语言和C++指针的同学应该有点印象,引用和指针还是一个很容易被混淆的概念。简单来说,引用是一个变量,是另外一个你想被引用的变量的别名,就像是你给某个人起的一个外号,你用这个外号来代替他的名字来称呼他,类似于一个副本。在Python中,变量和数据是分开存储的,数据保存在内存中的一个位置,变量中保存数据在内存中的地址。变量中记录数据的地址,就叫做引用。下面是在终端中运行ipython这个Python的交互式窗口,其中id()函数是返回对象的内存地址。
在这里插入图片描述
a = 1实际上就是将a这个标签贴在1上,b = a同样也是把b这个标签贴在1上,所以b和a都是1的引用,当a = 2时,a这个标签就会贴在2上,然而b不会因为b = a这个语句发生变化,其任然是1的引用。

def test(num):
    print("在函数内部 %d 对应的内存地址是 %d " % (num, id(num)))
    # 1.定义一个字符串变量
    result = "hello"
    print("函数要返回数据的内存地址是 %d " % id(result))
    # 2.将字符串变量返回,返回的是数据的引用,而不是数据本身
    return result
# 1.定义一个数字的变量
a = 10
# 数据的地址本质上就是一个数字
print("a 变量保存数据的内存地址是 %d" % id(a))
# 2.调用test函数,本质上传递的是实参保存数据的引用,而不是实参保存的数据
# 注意:如果函数有返回值,但是没有定义变量接收
# 程序不会报错,但是无法获得返回结果
r = test(a)
print("%s 的内存地址是 %d" % (r,id(r)))


# 输出结果
a 变量保存数据的内存地址是 10914784
在函数内部 10 对应的内存地址是 10914784 
函数要返回数据的内存地址是 139989701883752 
hello 的内存地址是 139989701883752

局部变量和全局变量

简而言之,局部变量就是在函数内部定义的变量,只能在函数内部使用(后面会学类,在类内部使用),在函数外部不可被发现,不可被使用。全局变量就是定义在模块内,在所有的函数、类的外面。
局部变量:

def demo1():
    # 定义一个局部变量
    # 1.出生:执行了下方的代码之后,才会被创建
    # 2.死亡:函数执行完成之后
    num = 10
    print("在demo1函数内部的变量是 %d" % num)
def demo2():
    num = 99
    print("%d" % num)
    pass
# 在函数内部定义的变量,不能在其他位置使用
# print(num)  这里如果这样写的话会报错
demo1()
demo2()


# 运行结果
在demo1函数内部的变量是 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值