文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python基础语法(六)

2023-10-24 05:47

关注

目录

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒个人主页
🥸🥸🥸C语言
🐿️🐿️🐿️C语言例题
🐣🐓🏀python

变量作用域

观察以下代码

def getPoint():x = 10y = 20return x, yx, y = getPoint()

在这个代码中, 函数内部存在 x, y, 函数外部也有 x, y.
但是这两组 x, y 不是相同的变量, 而只是恰好有一样的名字.

变量只能在所在的函数内部生效
在函数 getPoint() 内部定义的 x, y 只是在函数内部生效. 一旦出了函数的范围, 这两个变量就不再生效了

def getPoint():x = 10y = 20return x, ygetPoint()print(x, y)

在不同的作用域中, 允许存在同名的变量
虽然名字相同, 实际上是不同的变量

x = 20def test():x = 10print(f'函数内部 x = {x}')test()print(f'函数外部 x = {x}')

在函数内部的变量, 也称为 “局部变量”
不在任何函数内部的变量, 也称为 “全局变量”

如果函数内部尝试访问的变量在局部不存在, 就会尝试去全局作用域中查找

x = 20def test():print(f'x = {x}')test()

如果是想在函数内部, 修改全局变量的值, 需要使用 global 关键字声明

x = 20def test():global xx = 10print(f'函数内部 x = {x}')test()print(f'函数外部 x = {x}')

如果此处没有 global , 则函数内部的 x = 10 就会被视为是创建一个局部变量 x, 这样就和全局变量 x 不相关了

if / while / for 等语句块不会影响到变量作用域
换而言之, 在 if / while / for 中定义的变量, 在语句外面也可以正常使用.

for i in range(1, 10):print(f'函数内部 i = {i}')print(f'函数外部 i = {i}')

函数执行过程

调用函数才会执行函数体代码. 不调用则不会执行.
函数体执行结束(或者遇到 return 语句), 则回到函数调用位置, 继续往下执行.

def test():print("执行函数内部代码")print("执行函数内部代码")print("执行函数内部代码")print("1111")test()print("2222")test()print("3333")

这个过程还可以使用 调试器来观察.

链式调用

前面的代码很多都是写作

# 判定是否是奇数def isOdd(num):if num % 2 == 0:return Falseelse:return Trueresult = isOdd(10)print(result)

实际上也可以简化写作

print(isOdd(10))

把一个函数的返回值, 作为另一个函数的参数, 这种操作称为 链式调用

嵌套调用

函数内部还可以调用其他的函数, 这个动作称为 "嵌套调用

def test():print("执行函数内部代码")print("执行函数内部代码")print("执行函数内部代码")

test 函数内部调用了 print 函数, 这里就属于嵌套调用
一个函数里面可以嵌套调用任意多个函数

函数嵌套的过程是非常灵活的

def a():print("函数 a")def b():print("函数 b")a()def c():print("函数 c")b()def d():print("函数 d")c()d()

如果把代码稍微调整, 打印结果则可能发生很大变化.

def a():print("函数 a")def b():a()print("函数 b")def c():b()print("函数 c")def d():c()print("函数 d")d()

注意体会上述代码的执行顺序. 可以通过画图的方式来理解.

函数之间的调用关系, 在 Python 中会使用一个特定的数据结构来表示, 称为 函数调用栈 . 每次函数调用,都会在调用栈里新增一个元素, 称为 栈帧.

每个函数的局部变量, 都包含在自己的栈帧中

def a():num1 = 10print("函数 a")def b():num2 = 20a()print("函数 b")def c():num3 = 30b()print("函数 c")def d():num4 = 40c()print("函数 d")d()

来源地址:https://blog.csdn.net/2301_79178723/article/details/133950933

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯