Python 学习笔记(三)Function

python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量

1. Scope:

• If a variable is assigned inside a def, it is local to that function.
• If a variable is assigned in an enclosing def, it is nonlocal to nested functions.
• If a variable is assigned outside all defs, it is global to the entire file.

• global makes scope lookup begin in the enclosing module’s scope and allows
names there to be assigned. Scope lookup continues on to the built-in scope if the
name does not exist in the module, but assignments to global names always create
or change them in the module’s scope.
• nonlocal restricts scope lookup to just enclosing defs, requires that the names already
exist there, and allows them to be assigned. Scope lookup does not continue
on to the global or built-in scopes.

global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字。

>>> gcount = 0
>>> def func():
...     print(gcount)
...     
>>> def func_count():
...     global gcount
...     gcount +=1
...     return gcount
... 
>>> def func_count_test():
...     print(func_count())
...     print(func_count())
1
2

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

>>> def tester(start):
... state = start # Each call gets its own state
... def nested(label):
... nonlocal state # Remembers state in enclosing scope
... print(label, state)
... state += 1 # Allowed to change it if nonlocal
... return nested
...
>>> F = tester(0)
>>> F('spam') # Increments state on each call
spam 0
>>> F('ham')
ham 1
>>> F('eggs')
eggs 2
>>> spam = 99
>>> def tester():
... def nested():
... nonlocal spam # Must be in a def, not the module!
... print('Current=', spam)
... spam += 1
... return nested
...
SyntaxError: no binding for nonlocal 'spam' found

2. Arguments

  • Immutable arguments are effectively passed “by value.” (int,string,tuple) (复制)
  • Mutable arguments are effectively passed “by pointer.” (list, dictionary) (引用)
>>> def changer(a, b): # Arguments assigned references to objects
... a = 2 # Changes local name's value only
... b[0] = 'spam' # Changes shared object in-place
...
>>> X = 1
>>> L = [1, 2] # Caller
>>> changer(X, L) # Pass immutable and mutable objects
>>> X, L # X is unchanged, L is different!
(1, ['spam', 2])
def changer(a, b):
b = b[:] # Copy input list so we don't impact caller
>>> def multiple(x, y):
...     x=2
...     y=[3,4]
...     return x,y
... 
>>> X =1
>>> L=[1,2]
>>> X,L = multiple(X,L)
>>> X
2
>>> L
[3, 4]
>>> X,L
(2, [3, 4])

参数传递:*代表的是tuple,**代表map

>>> def echo(*args, **kwargs): print(args, kwargs)
...
>>> echo(1, 2, a=3, b=4)
(1, 2) {'a': 3, 'b': 4}

intersect and union:

def intersect(*args):res = []for x in args[0]: # Scan first sequencefor other in args[1:]: # For all other argsif x not in other: break # Item in each one?else: # No: break out of loopres.append(x) # Yes: add items to endreturn res
def union(*args):res = []for seq in args: # For all argsfor x in seq: # For all nodesif not x in res:res.append(x) # Add new items to resultreturn res

 

转载于:https://www.cnblogs.com/zyf7630/p/3093279.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python xpath定位不到_Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)...

#codingutf-8Created on 2016-7-20author: JenniferProject:登录百度账号from selenium importwebdriverimporttimedriver webdriver.Firefox()driver.get("http://www.baidu.com/")time.sleep(3)#点击登录:有些name为tj_login的元素为不可见的&#xff0…

基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则

dotNET兄弟会 专注.Net开源技术及跨平台开发!致力于构建完善的.Net开放技术文库!为.Net爱好者提供学习交流家园!公众号 围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实现、综合案例实现系列文章,敬请…

我国最新十大黑科技发布,颠覆你的想象!

全世界只有3.14 % 的人关注了数据与算法之美人工智能的飞速发展,让“黑科技”一词深入人心。目不暇接的各种前沿技术,一再刷新人们的认知世界。所谓“黑科技”,不仅仅要够炫酷,更要有足够的“生活温度”,实现真正的人性…

javascript理论篇(详情见地址)

一篇很精彩的javascript理论知识 http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html转载于:https://www.cnblogs.com/jangwewe/p/3161020.html

mock java_JAVA的mock工具mockito简介

在测试过程中,难免会碰到交互的外围系统不给力的情况,这时候mock就派上用场了,前段时间跟同学聊到这块的时候,他向我推荐mockito这个mock工具,试用了一下,确实很好用,这里给大家介绍下这款工具&…

基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则

围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实现、综合案例实现系列文章,敬请关注! ABP Framework 研习社(QQ群:726299208) ABP Framework 学习及实施DDD经验分享;示例源码、…

DataTable转成List集合

项目开发中&#xff0c;经常会获取到DataTable对象&#xff0c;如何把它转化成一个List对象呢&#xff1f;前几天就碰到这个问题&#xff0c;网上搜索整理了一个万能类&#xff0c;用了泛型和反射的知识。共享如下&#xff1a; public class ModelConvertHelper<T> where…

嗓子痛引发大抢救!33岁程序员的垂死经历,为所有人敲响警钟!

全世界只有3.14 % 的人关注了数据与算法之美最近广州天气多变&#xff0c;再加上不规律的饮食、作息&#xff0c;数据汪的扁桃体已经肿痛两三天了。在一大杯“凉茶”下肚后&#xff0c;最终我还是选择去医院做一次检查。万幸的是&#xff0c;检查结果出来后&#xff0c;医生说只…

java .this的用法_JAVA中this用法小结

Java中的this随处可见&#xff0c;用法也多&#xff0c;现在整理有几点&#xff1a;1. this是指当前对象自己。当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:1 public classHello {23   String s "Hello";45   pub…

.NET也内卷了,BAT大厂近日上演抢人大战!

这两年到处都流行“内卷”这个词&#xff0c;而IT互联网行业则是内卷重灾区。还不太明白什么是内卷&#xff1f;看看这个段子&#xff1a;关于内卷&#xff0c;网上有个比喻&#xff0c;说如果葵花宝典被公开了&#xff0c;就会变成一个灾难。因为如果只有一个人拥有的话&#…

EFDC水模型 初学者入门 及软件下载学习指导

EFDC模型有三个不同的版本&#xff0c;它们分别代表了计算机不同的操作菜单和功能。其中的两个版本功能齐全&#xff0c;包括了EFDC 所有的产品版本。另外一个是简化版&#xff0c;涵盖了水动力学&#xff08;包括盐度和温度的影响&#xff09;&#xff0c;毒物&#xff0c;沉积…

每日一笑 | 在地铁上被老奶奶让座是一种什么样的体验?

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

java access dbq_Java-Access汇总

http://www.doczj.com/doc/3b7b55100b4e767f5acfce38.html/view/d1c01b43a8956bec0975e33e.html在网上看了一些资料&#xff0c;基本上都是一样的。怎么试也行不通。于是我怀疑为什么那些错误的技术文章如此大张旗鼓的到处都是。今天有人问我如果把主机托管出去&#xff0c;也就…

一个IT人的非典型职场十年 (5)

2019独角兽企业重金招聘Python工程师标准>>> 对于非资深IT人来讲&#xff0c;IT咨询(IT Consulting)显得是比较高帅富一些&#xff0c;各种衣着光鲜的咨询报告&#xff0c;各种西装革履的顾问。 这先随便说两句什么是IT咨询&#xff0c;IT顾问究竟是在做啥工作。 I…

基于ABP落地领域驱动设计-01.全景图

什么是领域驱动&#xff1f;领域驱动设计&#xff08;简称&#xff1a;DDD&#xff09;是一种针对复杂需求的软件开发方法。将软件实现与不断发展的模型联系起来&#xff0c;专注于核心领域逻辑&#xff0c;而不是基础设施细节。DDD适用于复杂领域和大规模应用&#xff0c;而不…

伦敦科学博物馆用百年智慧打造的一套探索书,拓展孩子的科学、数学和艺术思维...

▲数据汪特别推荐点击上图进入玩酷屋说到素质教育&#xff0c;我们应该比较熟悉。不过&#xff0c;这几年&#xff0c;比素质教育更火的一个概念是——STEAM教育。教育家们普遍认为&#xff1a;在科学、技术、工程、艺术、数学之间存在着一种相互支撑、相互补充、共同发展的关系…

java中事务特性_「java三分钟」事务的传播特性详解

关注我&#xff0c;每天三分钟&#xff0c;带你轻松掌握一个Java相关知识点。事务传播行为就是多个事务方法相互调用时&#xff0c;事务如何在这些方法间传播。换言之&#xff0c;一个带事务的方法调用了另一个带事务的方法&#xff0c;被调用的方法它怎么处理自己事务和调用方…

Windows Azure 社区新闻综述(#69 版)

欢迎查看最新版本的每周综述&#xff0c;其中包含有关云计算和 WindowsAzure 的社区推动新闻、内容和对话。 以下是过去一周基于您的反馈汇集在一起的内容&#xff1a; 文章、视频和博客文章 使用 Azure 云服务中的本地存储时“路径太长”&#xff08;6 月 18 日发布&…

基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

前言上一篇 基于ABP落地领域驱动设计-01.全景图 概述了DDD理论和对应的解决方案、项目组成、项目引用关系&#xff0c;以及基于ABP落地DDD的通用原则。从这本篇开始&#xff0c;会更加深入地介绍在基于 ABP Framework 落地DDD过程中的最佳实践和原则。围绕DDD和ABP Framework两…

每日一笑 | 实名举报校长拿两份工资!

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;