繁星coding

好的,首先要做的事情。Python中没有“变量声明”或“变量初始化”这样的东西。简直就是我们所谓的“任务”,但应该只是称之为“命名”。分配意味着“左侧的这个名称现在指的是评估右侧的结果,无论它之前提到的是什么(如果有的话)”。foo = 'bar' # the name 'foo' is now a name for the string 'bar'foo = 2 * 3 # the name 'foo' stops being a name for the string 'bar',# and starts being a name for the integer 6, resulting from the multiplication因此,Python的名称(比“变量”更好的术语,可以说)没有关联的类型; 价值观。您可以将相同的名称重新应用于任何类型,无论其类型如何,但事物仍然具有依赖于其类型的行为。该名称只是一种引用值(对象)的方法。这回答了您的第二个问题:您不创建变量来保存自定义类型。您不创建变量来保存任何特定类型。你根本不“创造”变量。你给对象命名。第二点:当涉及到类时,Python遵循一个非常简单的规则,实际上比Java,C ++和C#等语言更加一致:块内声明的所有内容都是class类的一部分。因此,def这里编写的functions()是方法,即类对象的一部分(不是基于每个实例存储),就像在Java,C ++和C#中一样; 但这里的其他名字也是班级的一部分。同样,名称只是名称,它们没有关联类型,函数也是 Python 中的对象。从而:class Example:

data = 42

def method(self): pass在Python中,类也是对象。所以现在我们创建了一个名为的对象Example,它代表了所有东西的类Example。该对象有两个用户提供的属性(在C ++中,“成员”;在C#中,“字段或属性或方法”;在Java中,“字段或方法”)。其中一个是命名的data,它存储整数值42。另一个是命名的method,它存储一个函数对象。(Python自动添加了几个属性。)但是,这些属性仍然不是对象的一部分。从根本上说,一个对象只是一堆更多的名称(属性名称),直到你找到不能再分割的东西。因此,如果您故意设置了值,则可以在类的不同实例之间共享值,甚至可以在不同类的对象之间共享。让我们创建一个实例:x = Example()现在我们有一个名为的单独对象x,它是一个实例Example。的data和method实际上不是对象的一部分,但我们仍然可以找一找通过x的,因为有些魔力,Python做幕后。当我们查找时method,特别是,我们将获得一个“绑定方法”(当我们调用它时,x会自动作为self参数传递,如果我们Example.method直接查找则不会发生)。当我们尝试使用时会发生什么x.data?当我们检查它时,它首先在对象中查找。如果在对象中找不到它,Python会在类中查找。但是,当我们分配时 x.data,Python将在对象上创建一个属性。它不会取代类的属性。这允许我们进行对象初始化。Python将__init__在创建新实例时自动调用类' 方法(如果存在)。在这个方法中,我们可以简单地分配属性来为每个对象设置该属性的初始值:class Example:

name = "Ignored"

def __init__(self, name):

self.name = name    # rest as before现在我们必须指定一个name创建时间Example,每个实例都有自己的实例name。Example.name每当我们查找.name实例时,Python都会忽略class属性,因为首先会找到实例的属性。最后一点需要注意:修改(变异)和赋值是不同的事情!在Python中,字符串是不可变的。它们无法修改。当你这样做时:a = 'hi 'b = a

a += 'mom'您不会更改原始的“hi”字符串。这在Python中是不可能的。相反,您创建一个新字符串'hi mom',并导致a不再是一个名称'hi ',并开始成为一个名称'hi mom'。我们也给b了一个名字'hi ',在重新申请a名字后,b仍然是一个名字'hi ',因为它'hi '仍然存在并且没有被改变。但列表可以更改:a = [1, 2, 3]b = a

a += [4]现在b也是[1,2,3,4],因为我们b为a命名相同的东西命名,然后我们改变了那个东西。我们没有为aname命名创建一个新列表,因为Python只是对+=列表采用不同的方式。这对于对象很重要,因为如果您有一个列表作为类属性,并使用实例来修改列表,那么更改将在所有其他实例中“看到”。这是因为(a)数据实际上是类对象的一部分,而不是任何实例对象; (b)因为您正在修改列表而没有进行简单的赋值,所以您没有创建隐藏class属性的新实例属性。

python公共变量声明_Python变量声明相关推荐

  1. python中变量不需要事先声明_python 变量搜寻顺序法则LEGB之E注意事项

    众所周知,在python中,变量不需要事先声明,赋值后,即可调用使用.而调用的法则遵从LEGB法则,其中L为local,E为enclosing,G为Global,B为built-in,即变量首先在局部 ...

  2. python变量使用前必须声明_python变量不需要声明吗

    Python中常见的数据类型有字符串,整形,列表,元组,字典等. 在Python语言中,声明变量的同时需要为其赋值,毕竟不代表任何值的变量毫无意义,Python语言中也不允许有这样的变量. 语法结构如 ...

  3. python有效变量名_Python变量命名规则

    变量的命名规则 1.要具有描述性 2.变量名只能_,数字,字母组成,不可以是空格或者特殊字符(!@#$%^&*~) 3.不能以中文为变量名 4.不能以数字开头 5.变量名区分大小写 6.保留字 ...

  4. python合法变量类型_Python 变量类型

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  5. python定义字符串数组_python数组声明

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 如何在python? 我无法在文档中找到对数组的任何引用... 我正在制作一个小 ...

  6. python输出变量地址_Python——变量

    笑虎:千行代码入门Python​zhuanlan.zhihu.com 函数的参数​www.liaoxuefeng.com Python学习之变量的作用域 - fireporsche - 博客园​www ...

  7. python定义变量参数_Python变量定义与使用

    前言 对于任何编程语言都存在对数据的处理,比如数字.字符串.字符等,我们可以直接使用数据,同时还可以将数据保存到变量中,方便以后使用.什么是变量?在任何语言里面都一样,可以把它看成是个小容器,专门用来 ...

  8. python定义变量规范_Python 变量定义规范,具体内容

    Python语言的入门与精通. 工具/材料 电脑 笔记本 笔 声明变量 01 name="Alex Li" name--变量名(标识符) Alex Li--变量值 变量定义规则 0 ...

  9. c++ 静态变量赋值_Python变量及常量解释说明

    变量 (1)在计算机程序中,变量不仅可以是数字,还可以是任意数据类型, 变量子啊程序中就是一个变量名表示的,变量名必须是大小写英文,数字,和"_"的组合,切不能以数字开头. a = ...

最新文章

  1. mysql自动编号_MySQL自动编号与主键
  2. 各类神经网络知识收集
  3. java jobdetail_Java JobDetail.setName方法代码示例
  4. Ribbon-3使用配置文件自定义Ribbon Client
  5. 广东东软学院计算机系主任罗,广东东软学院副校长朱爱红一行来访我校
  6. ***教程十:数据库注入(上)
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的音乐播放系统
  8. 订单生产计划表范本_服装生产管理必看丨一文解决车间管理混乱
  9. JavaScript ES5之Object.create函数详解
  10. oracle学习总结1
  11. 电脑修改服务器时间怎么改,修改服务器时间_如何修改服务器时间 做到同步?...
  12. java实现文本编辑器
  13. 电脑上win10的mysql软件老闪退,技术编辑应对win10系统Mysql闪退的修复办法
  14. python识别文字位置_如何利用Python识别图片中的文字
  15. 树莓派有线网络设置_树莓派通过网线实现与电脑共享网络
  16. Long-tail Relation Extraction via Knowledge Graph Embeddings and Graph Convolution Networks
  17. 汉诺塔自动解题动画中的iOS开发技巧
  18. 怎样给黑白照片上色?手把手教你上色
  19. 计算机开机怎么设置网络连接,电脑怎么设置开机自动连接宽带
  20. 【Javaweb】基础开发流程与介绍

热门文章

  1. mysql 授权 失败_完美解决mysql客户端授权后连接失败的问题
  2. android gradle时间长,Android Studio gradle需要很长时间才能构建
  3. html背景颜色白色半透明,HTML – 背景颜色:透明意味着什么?
  4. linux读取一行数据命令,常用的linux命令和逐行数据处理的例子
  5. java部署容器_Linux容器——Docker(二)之 JavaWeb部署
  6. python调用外部程序 退出_Python调用外部程序——os.system()和subprocess.call
  7. 洛谷——P1010 [NOIP1998 普及组] 幂次方
  8. 处理中文乱码以及登陆验证的过滤器Filter(建议收藏)
  9. ubuntu之录屏软件kazam的安装
  10. Ubuntu之更新CMake的版本