当前位置: 首页 > news >正文

python与C系列语言的差异总结(4)

如果具有传统编译型语言的经验,大家可能会对是否使用字典而犹豫不决,担心字典的效率比列表或数组低。事实上Python字典的执行速度已经相当快了。Python语言的许多内部特性都依赖于字典,为提高字典的效率已经投入了大量的心血。Python的所有数据结构都经过了高度优化,因此不应该花太多时间去考虑哪个更快,哪个效率更高。

pass语句也可在Python中需要语句的其他任何地方使用。pass语句用作语句的占位符,但是它不执行任何操作:

if x < 5:

    pass

else:

    x = 5

Python没有提供case(或switch)语句。阅读工作中的代码,可以发现Switch/case语句在实际开发中使用频率确实很低。

与其他Python对象一样,函数也可以被赋值。函数可以被放入列表、元组或字典中。这个特性和C系列语言的函数指针类似。不过用起来更加简约。真正将函数做到了对象一样。

在大多数其他语言采用case或switch语句的场合,Python可以用串联的if…elif…elif…else结构来很好地应对。如果遇到极少数棘手的场合,通常可用函数字典来解决,如下所示:

def do_a_stuff():

    #process a

def do_b_stuff():

    #process b

def do_c_stuff():

    #process

func_dict ={'a':do_a_stuff,

'b':do_b_stuff,

'c':do_c_stuff }

X = 'a'

func dict[x]()

#运行字典中的函数

在使用变量之前,用global语句对其进行声明,可以显式地使其成为全局(global)变量。函数可以访问和修改全局变量。全局变量存在于函数之外,所有将其声明为全局变量的其他函数,以及函数之外的代码,也可以对其进行访问和修改。以下示例演示了局部变量和全局变量的差异:

 def fun():

      global a

      a = 1

      b = 2

nonlocal语句与global语句类似,它会让标识符引用最近的闭合作用域(enclosing scope)中已绑定的变量。

字符串的format函数可以实现类似C系列语言的格式化功能。

python的函数内部还可以定义函数。

g_var =0

#inner_test 函数中的g_var 绑定为同名的顶级变量

nl_var =0

print("top level-> g_var: {0} nl_var: {1}".format(g_var, nl_var))

def test():

    nl_var = 2

    #inner_test函数中的nl_var 绑定为 test 函数中的同名变量

    print("in test-> g_var: {0} nl_var:{1}".format(g_var, nl_var))

    def inner_test():

        #inner_test g_var 绑定为同名的顶级变量

        global g_var

        #inner_test函数中的nl_var 绑定为test 函数中的同名变量

        nonlocal nl_var

        g_var =1

        nl_var =4

        print("inner_test-> g_var: {0} nl_var:{1}".format(g_var, nl_var))

    inner_test()

    print("in test->g_var: {0} nl_var:{1}".format(g_var, nl_var))

test()

print("top level-> g_var: {0} nl_var:{1}".format(g_var, nl_var))

相关文章:

  • Java进阶学习笔记64——IO流
  • Linux下启动redis
  • C/C++基础知识复习(47)
  • JAVAweb之过滤器,监听器
  • Linux操作与权限2
  • git clone 后本地文件夹中只有 REDEME.md
  • Elasticsearch 相关面试题
  • 自学Linux系统软件编程第四天
  • bash快捷键完整版
  • 姿态矩阵/旋转矩阵/反对称阵
  • Docker root用户运行容器与非root用户运行容器的差异和注意事项(root容器、root用户容器)(特权端口)
  • 大模型在尿潴留风险预测及围手术期方案制定中的应用研究
  • 架构思维:分布式缓存_提升系统性能的关键手段(上)
  • 【设计原则】开闭原则
  • STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动
  • 【Uniapp-Vue3】在uniapp中使用pinia的基本用法
  • Linux:理解O(1)调度算法的设计精髓
  • 设计模式|结构型模式总结
  • vscode 版本
  • Vscode无法加载文件,因为在此系统上禁止运行脚本
  • 俄乌刚谈完美国便筹划与俄乌领导人通话,目的几何?
  • 以色列在加沙发起新一轮强攻,同步与哈马斯展开无条件谈判
  • 纽约市长称墨西哥海军帆船撞桥事故已致2人死亡
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 卿晨璟靓等用服刑经历“引流”,专家:将犯罪问题娱乐化会消解刑罚严肃性
  • 特朗普公开“怼”库克:苹果不应在印度生产手机