首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python规范化奇怪的行为

Python规范化奇怪的行为是指在Python编程语言中,一些看似奇怪或不符合直觉的行为。这些行为可能是由于Python语言设计的特性、语法规则或解释器实现方式所导致的。

Python规范化奇怪的行为包括但不限于以下几个方面:

  1. 整数除法的结果:在Python 2.x版本中,整数除法的结果会自动向下取整,即舍弃小数部分。例如,5 / 2 的结果是2而不是2.5。这在某些情况下可能会导致意想不到的结果。在Python 3.x版本中,整数除法的结果会自动转换为浮点数,即5 / 2 的结果是2.5。
  2. 列表的引用传递:在Python中,列表是可变对象,当将一个列表赋值给另一个变量时,实际上是将列表的引用传递给了新变量。这意味着对新变量的修改会影响原始列表。例如:
代码语言:python
代码运行次数:0
复制

list1 = 1, 2, 3

list2 = list1

list2.append(4)

print(list1) # 输出 1, 2, 3, 4

代码语言:txt
复制

要避免这种情况,可以使用切片操作或使用copy模块中的函数创建列表的副本。

  1. 可变默认参数的陷阱:在函数定义中,如果将可变对象(如列表、字典)作为默认参数,每次调用函数时都会使用同一个默认参数对象。这可能导致在函数中修改默认参数时,影响到其他调用该函数的地方。例如:
代码语言:python
代码运行次数:0
复制

def append_item(item, lst=[]):

代码语言:txt
复制
   lst.append(item)
代码语言:txt
复制
   return lst

print(append_item(1)) # 输出 1

print(append_item(2)) # 输出 1, 2,而不是预期的 2

代码语言:txt
复制

为了避免这个问题,可以将默认参数设置为None,并在函数内部创建一个新的可变对象。例如:

代码语言:python
代码运行次数:0
复制

def append_item(item, lst=None):

代码语言:txt
复制
   if lst is None:
代码语言:txt
复制
       lst = []
代码语言:txt
复制
   lst.append(item)
代码语言:txt
复制
   return lst

print(append_item(1)) # 输出 1

print(append_item(2)) # 输出 2

代码语言:txt
复制
  1. 变量作用域:在Python中,变量的作用域由其定义的位置决定。在函数内部定义的变量是局部变量,只在函数内部可见。如果在函数内部没有定义某个变量,Python会在外部作用域中查找该变量。如果在函数内部对外部作用域的变量进行修改,需要使用global关键字或nonlocal关键字。例如:
代码语言:python
代码运行次数:0
复制

def func():

代码语言:txt
复制
   x = 10  # 局部变量
代码语言:txt
复制
   print(x)

x = 5 # 全局变量

func() # 输出 10

print(x) # 输出 5

def outer():

代码语言:txt
复制
   x = 10  # 外部函数的局部变量
代码语言:txt
复制
   def inner():
代码语言:txt
复制
       nonlocal x  # 使用nonlocal关键字指示使用外部函数的变量
代码语言:txt
复制
       x = 20
代码语言:txt
复制
   inner()
代码语言:txt
复制
   print(x)  # 输出 20

outer()

代码语言:txt
复制

这些奇怪的行为在Python中是被规范化的,即它们是Python语言的一部分,并且有其设计和实现的原因。了解这些行为可以帮助开发者更好地理解和使用Python编程语言。在实际开发中,可以根据具体情况避免或利用这些行为,以达到预期的效果。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

delete奇怪行为

delete奇怪行为分为2部分: // 1.delete用defineProperty定义属性报错 // Uncaught TypeError: Cannot delete property 'value...但规则是这样,所以奇怪行为1是合理 占位初始值 猜测如果属性已经存在了,defineProperty()会收敛一些,考虑一下原descriptor感受: var obj = {}; obj.value...环境(比如onclick属性值执行环境,函数调用创建执行环境)和eval环境(eval传入代码执行环境) 变量对象/活动对象 每个执行环境都对应一个变量对象,源码里声明变量和函数都作为变量对象属性存在...) P.S.变量对象与活动对象这种“玄幻”东西没必要太较真,各是什么有什么关系都不重要,理解其作用就好 eval环境特殊性 eval执行环境中声明属性和函数将作为调用环境(也就是上一层执行环境)变量对象属性存在...,能不能删可能只是configurable一部分) 遵循规则是:通过声明创建变量和函数带有一个不能删天赋,而通过显式或者隐式属性赋值创建变量和函数没有这个天赋 内置一些对象属性也带有不能删天赋

2.3K30

taskscheduler java_java – taskScheduler池奇怪行为「建议收藏」

我有两个弹簧启动应用程序(1.4.3.RELEASE),它们位于同一台服务器上.应用程序A是一个单一应用程序,其中包含用于处理警报部分代码,而应用程序B是一个仅处理警报新专用应用程序.这里目标是打破小应用程序中...threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true); threadPoolTaskScheduler.setPoolSize(100); return threadPoolTaskScheduler; } } 昨天,我经历了一个奇怪行为...已检测到警报并将其发送到新应用B – >好 >应用程序B收到警报并开始根据taskScheduler处理它 – >好 >第一步已由应用程序B处理 – >好 >第二步已由应用程序A处理 – > NOK,奇怪行为...对我来说,每个taskScheduler都附加到创建它应用程序.我哪里错了?...UPDATE 我有一个发出警报真实盒子.这些警报必须由新应用程序处理.但我还有旧盒子没有迁移到新系统.所以我在两个不同项目中有处理代码.

1.8K10
  • 奇怪 Python 整数缓存机制。

    首先我们打开 Python 解释器,在里面输入如下内容: >>> a = 1024 >>> b = 1024 >>> a is b False 当 a 和 b 值皆为 1024 时候,a is b...为 False,那这里我有一个问题:当 a 和 b 值皆为 6 时候,a is b 输出结果是什么呢?...为什么待会告诉你,因为我想先讲一个更好玩东西:is。 is 叫同一运算符,它用来比较两个对象存储单元,实际比较是对象地址,来判断两个是不是引用同一个对象。...在内存中,id 这一串 xxxxx 数字其实是给了 a,is 去比较时候其实是比较这个 id 是不是同一个。...其实这就是 Python「整数缓存机制」在作怪! 在 Python 中,它会对比较小整数对象进行缓存([-5, 256]),而并非是所有的整数对象。

    1K40

    奇怪知识

    是一种战略选择和组织形式, 是依据企业特有的业务模式和组织架构, 通过有形产品和可实施方法构建一套持续不断 把数据变成资产并服务于业务机制。...企业需要完整数据资产体系, 围绕着能给业务带来价值数据资产进行建设, 推动业务数据向数据资产转化。...传统数字化建设往往局限在单个业务流程, 忽视了多业务关联数据,缺乏对数据深度理解。...更多是我们建设过程中模块化能力, 比如支付模块,可以是商品交易, 可以是游戏充值等任意需要支付功能地方 数据中台则是抽象数据能力共性形成通用数据服务能力, 关心是产出数据能力,比如产出用户画像...而随着机器学习、深度学习等技术发展, 从看似无用数据中挖掘出新价值能力也越来越强, 新技术架构为这些场景建设提供了很好能力支撑。

    81820

    Python 为什么会有个奇怪“...”对象?

    它是中文标点符号半个省略号,也即由英文 3 个点组成。如果你是第一次看到,很可能会觉得奇怪:这玩意是怎么回事?PS:如果你知道它,仔细看过本文后,你同样可能会觉得奇怪!...但我本人还是倾向于使用 pass,不知道你是怎么想呢? 2、奇怪 Ellipsis 和 ... ......虽然官方说它们是同一个对象两种写法,而且说成是单例(singleton),但我还发现一个非常奇怪现象,与文档描述是冲突: ? 如你所见,赋值给 ......时会报错SyntaxError: cannot assign to Ellipsis ,然而 Ellipsis 却可以被赋值,它们行为根本就不同嘛!...出生在 Python 3 时代,或许在将来会完全取代 Ellipsis。目前两者共存,它们不一致行为值得我们注意。我建议:只使用"..."吧,就当 Ellipsis 已经被淘汰了。

    2K10

    奇怪 Javascript

    javascript is weird 我意思是,对于刚开始使用这种语言和他语言(例如 C++ 或 C#)开发人员来说,javascript 可能会很奇怪。 某些语言可能会让你大吃一惊??...一些奇怪类型。 另一个例子是当你运行代码 typeof null 时: typeof null; // result object 这会使你错误地认为 null 是对象(但并不是,它是原始值)。...在这种情况下,这不仅是一件奇怪事情,而且是语言中一个无法纠正错误,因为它会破坏代码其他部分。...08/29/self-invoking-functions-in-javascript-or-immediately-invoked-function-expression/) 重置数组 最后,重置数组奇怪方法是...1, 2, 3, 4, 5, 6] arr.length = 0; console.log(arr); // displays [] 希望你喜欢它,如果你知道其他特定于 javascript 语言奇怪知识

    95210

    python中奇奇怪注释方式

    注释是给你看,而不是让计算机运行程序。注释是程序文档一部分,但是运行时会忽略掉它们。...---- 第一种——# 单行注释 在程序(或者其他任何东西)前面加一个“#“即可把它变成注释 #print(123) 这虽然是一个print函数,但是程序并不会运行它,因为它前面加了“#”,解释器会自动忽略它们...行末注释 print(123)#这是一个输出123程序 注:在“#”后程序皆会被理解为注释(本行) 多行注释 #123 #234 #234444 在任何一行程序前加上“#”都会变为注释(下面会介绍更简单方法...#”都会变为注释(下面会介绍更简单的方法) ---- """ 这是一个字符串,但是毫无作用,所以也可以看做一个注释(尽管严格意义上来讲并不是) """11 11 11 11 1""" 注:他是可以跨行

    62930

    什么是行为驱动 Python

    或许你是一个 Python 人(Pythonista),正在寻找更好方法来测试你代码。...下面是用Gherkin编写行为规范示例: 根据产品行为定义产品功能可以更容易地描述产品,开发产品并对其进行测试。 这是BDD核心:使行为成为软件开发焦点。...Python behave 框架 behave 是 Python 中最流行 BDD 框架之一。...behave 有两个主要层: 用 Gherkin .feature 文件编写行为规范 用 Python 模块编写步骤定义和钩子,用于实现 Gherkin 步骤 如上例所示,Gherkin 场景有三部分格式...任何这些框架都是不错选择。 另外,请记住,Python 测试框架可用于任何黑盒测试,即使对于非 Python 产品也是如此!

    1.6K30

    数据库规范化

    元组:表中一行就是一个元组。 分量:元组某个属性值。...二、函数依赖 1、函数依赖 设X,Y是关系R两个属性集合,当任何时刻R中任意两个元组中X属性值相同时,则它们Y属性值也相同,则称X函数决定Y,或Y函数依赖于X记作X→Y。...4、完全函数依赖 设X,Y是关系R两个属性集合,X’是X真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。...5、部分函数依赖 设X,Y是关系R两个属性集合,存在X→Y,若X’是X真子集,存在X’→Y,则称Y部分函数依赖于X。...三、5大范式及其特点 1NF:原子性 字段不可再分,否则就不是关系数据库(所以在正常关系数据库中是不可能创建出不符合1NF); 2NF:唯一性 一个表只说明一个事物,1NF消除非主属性对码部分函数依赖之后就是

    80460

    深度学习中规范化

    这篇文章介绍深度学习四种主流规范化, 分别是Batch Normalization(BN[9]), Layer Normalization(LN[7]), Instance Normalization...,将activation变为均值为0,方差为1正态分布,而最后“scale and shift”\((\gamma,\beta)\)操作则是为了让因训练所需而“刻意”加入规范化能够有可能还原最初输入...首先要弄清楚为什么没有BN,收敛会慢,对于一个深层网络来说,会发生梯度弥散, 这样在反向传播更新梯度时,会更新得非常慢,收敛也会变得慢,而BN将原来要变小activation通过规范化操作,使activation...为了消除batch影响,LN,IN,GN就出现了。这三个规范化操作均对于batch都是不敏感。 BN是针对不同神经元层计算期望和方差,同一个batch有相同期望和方差。...在图像风格化任务中,生成结果主要依赖于单个图像实例,所以这类任务用BN并不合适,但可以对HW做规范化,可以加速模型收敛[6][8]。

    82800

    2833 奇怪梦境

    题目描述 Description Aiden陷入了一个奇怪梦境:他被困在一个小房子中,墙上有很多按钮,还有一个屏幕,上面显示了一些信息。...屏幕上说,要将所有按钮都按下才能出去,而又给出了一些信息,说明了某个按钮只能在另一个按钮按下之后才能按下,而没有被提及按钮则可以在任何时候按下。...接下来M行,每行两个数ai,bi,表示bi按钮要在ai之后按下。所给信息可能有重复,保证ai≠bi。 输出描述 Output Description 若按钮能全部按下,则输出“o(∩_∩)o”。...若不能,第一行输出“T_T”,第二行输出因信息有矛盾而无法确认按下顺序按钮个数。输出不包括引号。...对于50%数据,保证0<N≤2000。 对于70%数据,保证0<N≤5000。 对于100%数据,保证0<N≤10000,0<M≤2.5N。

    1.2K50

    用户行为分析(Python

    本次就通过电商角度,选取阿里天池项目中淘宝App用户行为数据利用Python进行数据分析。 一、理解需求 1....明确分析目标及其方向 通过对用户关键行为埋点获取日志数据,包含用户、商品、行为、时间等信息,而看似简单几个维度,通过数据分析手段,便能从不同角度挖掘蕴含价值。...二、理解数据 数据中包含了淘宝App由2019年11月28日至2019年12月3日之间,有行为随机用户所有行为行为包括点击、购买、加购、收藏)。...客户可以被分作125个细分群,可以根据客户交易行为差异针对不同群体做不同推荐。...RFM模型分析前提条件: 最近有过交易行为客户,再次发生交易可能性高高于最近没有交易行为客户 交易频率较高客户比交易频率较低客户,更有可能再次发生交易行为 过去所有交易金额较多客户,比交易金额较少客户

    4.6K40
    领券