Sim*_*mon 1 python string declare
我知道Python是一种动态语言,并且通常不需要事先声明变量,但是在我需要创建变量然后稍后给它一个值的情况下,以下两种方法都有效:
some_variable = '' 
some_variable = str()
Run Code Online (Sandbox Code Playgroud)
两者之间是否存在差异,哪些被认为是最佳实践?
例:
some_variable = str() 
for number in range(10): 
    some_variable += str(number)
print(some_variable)
Run Code Online (Sandbox Code Playgroud)
适用于some_variable = ''和some_variable = str()
通过最佳实践,我并不是指"哪种编码风格最佳/最具可读性",而是指内存消耗,速度等因素,总体而言,这些因素对于一般用途更为可靠.
我知道Python是一种动态语言,通常不需要预先声明变量
什么?首先,事先声明变量与动态或非动态有何关系?其次,你怎么能想象任何禁止“事先”声明变量(无论这意味着什么)的语言都能工作?您需要在某个时刻直接声明一些变量。
这两者之间有区别吗?哪一个被认为是最佳实践?
是的,存在差异。考虑一下:
def str():
   return 1
x = str()
Run Code Online (Sandbox Code Playgroud)
Python不会保护您免受变量阴影的影响。但文字空字符串''不能被隐藏。这是功能层面上的差异。
性能水平上也存在差异:由于被转换为不同的字节码,x = ''速度稍快一些。x = str()毕竟x = ''不需要函数调用(由于变量遮蔽而无法再次优化)。
最后,esthethics:x = ''可能更具可读性x = str()。同样,因为您需要确定str()上下文中实际是什么。
总而言之:与 一起去x = ''。
如果要将变量初始化为空值,则使用空值文字会稍快一些,因为它可以避免必须进行名称查找.
也就是说,如果你写:
some_variable = str()
Run Code Online (Sandbox Code Playgroud)
Python首先需要确保你没有写过像傻瓜这样的东西
str = int
Run Code Online (Sandbox Code Playgroud)
首先在一些可见范围内,所以它必须进行递归名称查找.
但如果你写:
some_variable = ''
Run Code Online (Sandbox Code Playgroud)
那么有没有办法,''都不会是什么,但一个str.(类似的原则适用于列表和元组文字:prefer []和()over list()和tuple().)
但更一般地说:将变量初始化为空值通常被认为是Python中的代码味道.对于像空列表这样的东西,可以考虑使用生成器表达式(... for ... in ...)或生成器函数(使用yield) - 在大多数情况下,您可以避免设置空值,这通常被认为是更加Pythonic的样式.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           156 次  |  
        
|   最近记录:  |