2015/8/26 Python基础(1):基本规则及赋值「建议收藏」

2015/8/26 Python基础(1):基本规则及赋值「建议收藏」Python有如下的基本规则:#后表示注释\n是行分隔符\是继续上一行,将过长语句分开;分号将两个语句连接在一行中:冒号将代码头和体分开代码块用缩进块的方式体现不同缩进深度分隔不同的代码

大家好,又见面了,我是你们的朋友全栈君。

Python有如下的基本规则:
  #后表示注释
  \n是行分隔符
  \是继续上一行,将过长语句分开
  ;分号将两个语句连接在一行中
  :冒号将代码头和体分开
  代码块用缩进块的方式体现
  不同缩进深度分隔不同的代码块
  Python文件用模块的形式组织

缩进推荐风格,缩进四个空格宽度,避免使用制表符。

 

赋值语句
Python中,主要赋值运算符是等号( = )
赋值不是直接将一个值赋给一个变量,对象是通过引用传递的。不管变量是新创建的还是已经存在的,都是将该对象的引用赋值给变量。

C语言中,赋值语句可以当成一个表达式,可以返回值。但在Python中,赋值语句不会返回值。这使得这样的语句是非法的

>>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1
y = (x = x + 1)
^
SyntaxError: invalid syntax

>>> if (a = 3):

SyntaxError: invalid syntax

这就避免了判断语句中,将 == 符号误写成 = 的问题。是一个很好的功能。

同样的Python中链式赋值并没有问题。

>>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1
y = (x = x + 1)
^
SyntaxError: invalid syntax

>>> if (a = 3):

SyntaxError: invalid syntax

同时还有增量赋值符

+=   -=   *=   /=   %=   **=
<<=  >>=   &=   ^=   |=

相对于普通赋值不仅仅是写法改变,最有意义的变化是第一个对象仅被处理一次。
Python不支持x++或–x这样的前置/后置自增/自减运算
多元赋值

>>> x, y, z = 1, 2, 'a string'
>>> x
1
>>> y
2
>>> z
'a string'
>>> x, y, z
(1, 2, 'a string')

赋值时将等号两边的对象都看成元组

使用多元赋值的方法可以不使用中间变量直接交换表量的值

>>> x , y = 1, 2
>>> x, y
(1, 2)
>>> x, y = y, x
>>> x, y
(2, 1)

 

专用下划线标识符

  _xxx 不用’from module import *’导入
  __xxx__系统定义名字
  __xxx 类中私有变量名

风格提示: 避免用下划线作为变量名的开始
下划线对于解释器有特殊的意义,而且是内建标识符所使用的符号,所以应避免下划线作为变量名的开始。一般来讲_xxx被看做私有的,在模块或类外不可使用,所以当变量是私有时,用_xxx是很好的习惯。因为__xxx__有特殊含义,所以普通变量命名应避免这种风格

关于变量的赋值部分
Python的变量的赋值都是引用。这设计到它的内存管理机制。Python使用了引用计数这一简单技术。内部记录着所有使用中的对象各有多少引用。
当对象被创建时,就创建一个引用计数,当对象不背需要时,即引用计数为0时就被垃圾回收。
当对象被创建并赋值给变量时,该对象的引用计数就被设置为 1
当同一个对象又被赋值给其它变量时,或者作为参数传递给函数,方法或类实例时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用或者称别名,就被创建(引用计数加1)

x = 2
y = x

第一句创建了一个整数对象并引用赋值给x。x是第一个引用,该对象的引用计数设置为 1 。当y = x 语句执行时,并没有为y创建一个新对象,而是该对象的引用计数增加了1次。这是引用计数的增加。同样还有作为参数被函数调用,或者对象被加到某个容器对象中时。
而当变量被赋值给另一个对象时,原对象的引用计数也会自动减 1

foo = 3
foo = '123'

当3被创建赋值给foo时,引用计数是1 。 当它重新赋值给对象’123’时,3的引用计数自动减1
当本地引用离开了作用范围,比如函数结束时。
对象别名被显式的销毁
对象别名被赋值给其他对象
对象从一个窗口对象中移除
窗口对象本身被销毁
这几个情况都会减少引用计数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156165.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matplotlib-base_matplotlib3d柱状图

    matplotlib-base_matplotlib3d柱状图作者:Vamei出处:http://www.cnblogs.com/vamei欢迎转载,也请保留这段声明。谢谢!在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来。比如说我

    2022年8月2日
    6
  • VC编程入门浅谈「建议收藏」

    VC编程入门浅谈「建议收藏」
    学VC并不是传说的那么难,可不下些功夫是学不成的。学编程急不得,没有编程的基础知识上来就学VC肯定碰一头灰,说VC难就难在这点上了。如果硬上,意志坚强的话还能挺过来,但最后还得回头来补习基础知识。意志不坚强的话,很有可能就此放弃,并留下一个VC难得不得了的印象。

      其实,只要踏踏实实一步一步来,学VC很简单。对于没有编程基础的人首先要学习编程的基础知识,如变量,语句,基本的算法等,然后写一些小的程序,实现些常用算法对自己的思维是很好的锻炼,对以后的学习大有好处。起码要能排

    2022年6月17日
    30
  • ASP.NET MVC实现权限管理以及权限分配「建议收藏」

    ASP.NET MVC实现权限管理以及权限分配「建议收藏」权限管理与分配至少要有三张表然而往往难住我们的并不是数据库的设计而是后台的实现 //查询用户所具有的权限    publicListGetprenisson(intuserid){      ptestEntitiespst=newptestEntities();          stringsql

    2022年7月22日
    15
  • 最新手机号段归属地数据库(2017年4月16日版)免费下载

    最新手机号段归属地数据库(2017年4月16日版)免费下载2017年4月16日版360569条记录最新手机号段数据库号码归属地数据库移动号段联通号段电信号段14号段170号段(虚拟运营商)权威全面准确规范字段包括省份城市运营商邮编区号等信息,对于数据分析、号码归属地查询等非常有帮助三种格式:MYSQL,MSSQL,accessMDB格式字段:手机号码前7位,省份,城市,区号,运营商,邮编末…

    2022年7月22日
    11
  • 什么是递归,通过这篇文章,让你彻底搞懂递归

    什么是递归,通过这篇文章,让你彻底搞懂递归想了解更多数据结构以及算法题 可以关注微信公众号 数据结构和算法 每天一题为你精彩解答 也可以扫描下面的二维码关注啥叫递归聊递归之前先看一下什么叫递归 递归 就是在运行的过程中调用自己 构成递归需具备的条件 1 子问题须与原始问题为同样的事 且更为简单 2 不能无限制地调用本身 须有个出口 化简为非递归状况处理 递归语言例子我们用 2 个故事来阐述一下什么叫递归 1 从前有座山 山里有座庙 庙里有个老和尚 正在给小和尚讲故事呢 故事是什么呢 从前有座山 山里有座庙 庙里有个老和尚 正

    2025年6月22日
    4
  • java JDBC连接数据库步骤及代码

    java JDBC连接数据库步骤及代码JDBC连接数据库,包含7个步骤(1)加载JDBC驱动程序在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(StringclassName)实现,成功加载后,会将Driver类的实例注册到DriverManager类中。代码如下:static{ try{ …

    2022年7月26日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号