当前位置: 首页 > 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))
http://www.dtcms.com/a/37912.html

相关文章:

  • 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无法加载文件,因为在此系统上禁止运行脚本
  • 大语言模型学习路径与开源模型推荐
  • 【第六节】C++设计模式(结构型模式)-Bridge(桥接)模式
  • SGLang中context-length参数的默认值来源解析
  • 【Python修仙编程】(二) Python3灵源初探(2)
  • 代码异常(js中forEach)NO.3
  • 基于无人机遥感的烟株提取和计数研究
  • EX_25/2/24
  • 【ISP】畸变校正 LDC
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_set_inherited_sockets
  • DeepSeek回答:AI时代Go语言学习路线