热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

函数与作用域

1.函数1.1函数一般形式1deff():2print(OK)3f()4print(f)函数作用:(1)避免码重复(2)可拓展性强(3)代码一致性这其中需注意:打印出来的f相当于
1.函数

1.1函数一般形式

1 def f():
2 print("OK")
3 f()
4 print(f)

函数作用:

(1)避免码重复

(2)可拓展性强

(3)代码一致性

这其中需注意:打印出来的f相当于是一个变量的地址;只有()才会执行函数;函数有着自己的作用域;函数会预先储存进内存,但是执行还是一行一行来。

1.2形参和实参

1 def num(a,b): 2 print("gaga is %s %s"%a,b)

上述代码中的a,b就是形参。通过形参就可以将外来的数据带入到函数中执行。

在运行函数的时候num(1,2)其中1和2就是实参。实参是根据自己需要输入进去的。

注意:不单单是数字输入其他的如:变量,函数等。

1.3返回值

1 def f(n):                       
2 return n*n
3 def foo(a,b,func):
4 return func(a)+func(b)
5 print(foo(1,2,f))

返回关键字return后面的内容就是该函数的返回值。返回值的作用是结束函数并且返回一个值。

从上述的代码中可以看出:

(1)返回多个值 return会将其做成一个元组

(2)以函数为实参时注意括号有无很重要

1.4 四种方式

函数  >>>  执行

1.def f(a,b)  >>> f(1,2)         # 必须一一对应  

2.def f(sex="female")             # 有默认的效果

3.def f(*args) >>> f (1,2,i,j)  # 必须是无命名,也可以元组的形式添加。但是*[1,2,4]这样实参会是一个元组

4.def f(**kwargs) >>> f("name"="a","lk"=23) # 道理同上,但都是键值对。

四种之间的顺序是:1234 其中有些细节应以试验效果为准。没出现歧义为准。

2.作用域
 int (a)
1
a =1 2 def f():
3 a =2
4 b =9
5 print(a) # 2
6 def l():
7 # nonlocal b
8 b = 3
9 def p():
10 nonlocal b
11 b=4
12 print(b) # 4
13 a =4
14 p()
15 print(b) # 4
16 l()
17 print(b) # 9
18 f()

此处进行了3次函数的嵌套,共4层,且将最里面一层看成第四层。

作用域的思考搜寻范围一次为:legb即

"build in"    >>>   int
"global" >>> a = 1
"enclosing" >>> a = 2 b = 3
"local" >>> b = 4 a = 4

总结:

(1)从里往外找。在最里层print(b)中解释器会先在本层找b,本层没有就找到外层的b=3。
(2)里层需要用外层的变量。"若local和enclosing中想修改enclosing中的即内部层修改其上一层(不包括global)的用nonlocal 并且只能修改上一层上上层没影响"例子是注释中的b=9
(3)"变量在没声明的情况下不能修改上一层的,即使变量名字一样也是指在本层中使用(不是同一个变量)"

(4)第四层中若是没声明nonenclosing b 则打印b会报错原因是不能先执行后打印。这也说明的解释器将函数先储存进了内存。

 


推荐阅读
  • TCP实现之:套接字
    TCP实现之:套接字套接字的数据结构按照域的不同可以分为三种:用户态套接字、socket和sock,其中socket结构体是内核中的与用 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • Linux内核那些事之连接跟踪
    “本文分析了Linux内核连接跟踪的关键实现”连接跟踪(也叫会话管理)是状态防火墙关键核心,也是很多网元设备必不可少的一部分。各厂商的实 ... [详细]
  • 谁说QLC闪存不堪大用!Intel 670p SSD深度揭秘
    ssd品牌众多,intel可以说是非常优秀的那一个,早些年的x25系列至今都是让人津津乐道的经典,不过近些年,intel固态存储的主要精力转向了企业、数据中心市场,消费级领域产品并 ... [详细]
  • 这篇文章主要讲解了“面向对象设计的六大原则是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究 ... [详细]
  • 【图解HTTP】第一章 了解web及网络基础
    [图解HTTP]了解Web及网络基础Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resour ... [详细]
  • 运行机制_PHP 底层的运行机制与原理转
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP底层的运行机制与原理--转相关的知识,希望对你有一定的参考价值。发现一片总结的还不错的文 ... [详细]
author-avatar
也许_枉然
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有