python学习笔记(11)-语法要求(缩进、标识符、变量)

本节点标题
1、语法要求
1.1、缩进规范
1.2、变量标识符规范
2、变量
2.1、变量的赋值是存放在内存空间中,再从内存空间获取
2.2、变量赋值的时候,若变量名在内存中没有的话就等于赋一个新的变量,若变量名已在内存中,则是重新改写这个变量
2.3、变量的赋值是指向内存地址,变量1赋值变量2,变量1重新赋值后不改变变量2的值,因为变量1重新赋值后内存地址改变,而没有重新赋值的变量2内存地址不变。
2.4、查看变量的内存地址,id()
2.5、python虚拟机跟操作系统打交道,它对python做了优化,如果变量赋值为0-255(python2.7实际是-5~256)其中一个数字,则相同数值的变量全都指向同一内存空间,避免浪费内存
2.6、多单词拼接变量名风格规范
2.7、多个变量赋值
2.8、变量的引用
2.9、多变量的引用

========================================================================================================================

1、语法要求

1.1、缩进规范

缩进统一,空格、tab等,尽量使用一种。(官方建议四个空格)
流程控制语句体要缩进,不缩进则被解析为非流程控制的语句体。

例子1:
无缩进则报错:
#coding:utf-8
a=1
b=2
if (b>=a):
print "7、b大于等于a"
else:
print "7、b小于a"

运行结果:(语句体没缩进会报错)
[[email protected] script]# python BiJiaoYunSuanFu.py
File "BiJiaoYunSuanFu.py", line 42
print "7、b大于等于a"
^
IndentationError: expected an indented block(将一块缩进)

正确如下:
if (b>=a):
print "7、b大于等于a" --至少有一个空格或tab缩进
else:
print "7、b小于a"

多个空格少个空格都会报错,要注意!
----------------------------------------------------------------------------------------------------------------------------------------------
例子2:
name = raw_input("Please input your name:")
if name == ‘Alex‘:
print "he is the python teacher. "
print "haha"
print "xixi"

运行结果1:(没缩进的语句不会被解析为流程结构的语句体,没缩进语句出现的时候已代表if流程结束了)
Please input your name:qq
qq
xixi

运行结果2:(有缩进的语句会被解析为流程结构的语句体,满足条件则执行,流程结构的语句体执行结束后继续往下运行程序其他语句)
Please input your name:Alex
he is the python teacher.
haha
xixi
----------------------------------------------------------------------------------------------------------------------------------------------
例子3:
name = raw_input("Please input your name:")
if name == ‘Alex‘:
print "he is the python teacher. "
print "haha"
print "xixi"

运行结果:(流程语句体的缩进不统一也会报错)
[[email protected] ~]# python /root/XWR/my_python/script/Node1/user_interactive.py
File "/root/XWR/my_python/script/Node1/user_interactive.py", line 9
print "haha"
^
IndentationError: unindent does not match any outer indentation level
----------------------------------------------------------------------------------------------------------------------------------------------
例子4:
#coding:utf-8
a=1
b=2
if (b>=a):
print "7、b大于等于a"
else:
print "7、b小于a"

运行结果:(if下语句体与else下语句体不是同一层的,缩进可不一致,但建议尽量同一缩进)
7、b大于等于a

1.2、变量标识符规范

? 标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)
? 标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成。
? 标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。
? 标识符名称不能是关键字,如import、class、break、if、while等等,用了不报错,但当使用关键字的时候就报错了,被你的变量冲掉了原来的关键字
? 有效 标识符名称的例子有i、__my_name、name_23和a1b2_c3。
? 无效 标识符名称的例子有2things、this is spaced out和my-name。

2、变量

2.1、变量的赋值是存放在内存空间中,再从内存空间获取

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

>>> name = "Zha"
>>> name
‘Zha‘
>>>

2.2、变量赋值的时候,若变量名在内存中没有的话就等于赋一个新的变量,若变量名已在内存中,则是重新改写这个变量
>>> name = "Zha"
>>> name
‘Zha‘
>>> name = "Zhong Yi"
>>> name
‘Zhong Yi‘
>>>

2.3、变量的赋值是指向内存地址,变量1赋值变量2,变量1重新赋值后不改变变量2的值,因为变量1重新赋值后内存地址改变,而没有重新赋值的变量2内存地址不变。
>>> name = "Zhong Yi"
>>> name
‘Zhong Yi‘
>>> name2 = name
>>> name2
‘Zhong Yi‘
>>> name = "Jigongtou"
>>> name
‘Jigongtou‘
>>> name2
‘Zhong Yi‘
>>>

2.4、查看变量的内存地址,id()
例子1:
>>> id(name)
140514571357472
>>> id(name2)
140514571357520
>>> id(name),id(name2)
(140514571357472, 140514571357520)
>>>

例子2:
>>> a = 10
>>> b = a
>>> id(a),id(b)
(29024400, 29024400)
>>>

例子3:
有时候完全独立的变量赋相同值,存放内存地址一样,不会另外再开新的内存空间
>>> a = 10
>>> b = a
>>> id(a),id(b)
(29024400, 29024400)
>>> c = 10
>>> id(a),id(b),id(c)
(29024400, 29024400, 29024400)
>>>

2.5、python虚拟机跟操作系统打交道,它对python做了优化,如果变量赋值为0-255(python2.7实际是-5~256)其中一个数字,则相同数值的变量全都指向同一内存空间,避免浪费内存
>>> a = -6
>>> b = a
>>> c = -6
>>> id(a),id(b),id(c)
(30048416, 30048416, 30048224) -------不同
>>> del a,b,c
>>>
>>> a = -5
>>> b = a
>>> c = -5
>>> id(a),id(b),id(c)
(29024760, 29024760, 29024760) --------相同
>>> del a,b,c
>>>
>>> a = 256
>>> b = a
>>> c = 256
>>> id(a),id(b),id(c)
(29030448, 29030448, 29030448) --------相同
>>> del a,b,c
>>>
>>> a = 257
>>> b = a
>>> c = 257
>>> id(a),id(b),id(c)
(30048224, 30048224, 30048392) -------不同

2.6、多单词拼接变量名风格规范
>>> eric_gf_name = "Erin" --建议
>>> EricFgName = "Eric" --不建议,因为类名也是首字母大写的,区别开来
>>> ericGfName = "Eric" --建议
风格要统一,不能代码一时用一种风格变量名,一时又换另一种变量名

2.7、多个变量赋值
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
>>> a=b=c=1
>>> a,b,c
(1, 1, 1)
>>>

您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "john"
以上实例,两个整型对象1和2的分配给变量a和b,字符串对象"john"分配给变量c。
>>> a,b,c=1,2,"john"
>>> a,b,c
(1, 2, ‘john‘)
>>>

2.8、python2.x变量的引用
变量把对象和自己连接起来(指针连接对象空间),这就是引用。引用完成,就实现了赋值。

%操作符 + %变量名 一起使用才能引用变量,更多类型变量的操作符参考“数据类型/字符串/字符串格式化(%操作符)”章节

>>> name = ‘Alex‘
>>> print """Welcome to Python,
...
... I am %s
... good bye.
... """ %name
Welcome to Python,

I am Alex
good bye.

>>>

>>> age = 1
>>> print ‘‘‘I am %d year old‘‘‘ %age
I am 1 year old

2.9、python2.x多变量的引用
>>> name = "Alex"
>>> age = 18
>>> print "%s is %d years old." %(name,age)
Alex is 18 years old.
>>>

2.10、python3.x变量的引用
(以后会说到字符串格式化(format()函数),本节点略过)
自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。
语法
它通过{}和:来代替%。
“映射”示例
通过位置
In [1]: ‘{0},{1}‘.format(‘kzc‘,18)
Out[1]: ‘kzc,18‘
In [2]: ‘{},{}‘.format(‘kzc‘,18)
Out[2]: ‘kzc,18‘
In [3]: ‘{1},{0},{1}‘.format(‘kzc‘,18)
Out[3]: ‘18,kzc,18‘
字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
--------------------------------------
通过关键字参数
In [5]: ‘{name},{age}‘.format(age=18,name=‘kzc‘)
Out[5]: ‘kzc,18‘
--------------------------------------
通过对象属性
class Person:
  def __init__(self,name,age):
    self.name,self.age = name,age
   def __str__(self):       
return ‘This guy is {self.name},is {self.age} old‘.format(self=self)

In [2]: str(Person(‘kzc‘,18))
Out[2]: ‘This guy is kzc,is 18 old‘
--------------------------------------
通过下标
In [7]: p=[‘kzc‘,18]
In [8]: ‘{0[0]},{0[1]}‘.format(p)
Out[8]: ‘kzc,18‘
有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。
--------------------------------------
格式限定符
它有着丰富的的“格式限定符”(语法是{}中带:号),比如:
填充与对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如
In [15]: ‘{:>8}‘.format(‘189‘)
Out[15]: ‘   189‘
In [16]: ‘{:0>8}‘.format(‘189‘)
Out[16]: ‘00000189‘
In [17]: ‘{:a>8}‘.format(‘189‘)
Out[17]: ‘aaaaa189‘
--------------------------------------
精度与类型f
精度常跟类型f一起使用
In [44]: ‘{:.2f}‘.format(321.33345)
Out[44]: ‘321.33‘
其中.2表示长度为2的精度,f表示float类型。
--------------------------------------
其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。
In [54]: ‘{:b}‘.format(17)
Out[54]: ‘10001‘
In [55]: ‘{:d}‘.format(17)
Out[55]: ‘17‘
In [56]: ‘{:o}‘.format(17)
Out[56]: ‘21‘In [57]: ‘{:x}‘.format(17)Out[57]: ‘11‘
--------------------------------------
用,号还能用来做金额的千位分隔符。
In [47]: ‘{:,}‘.format(1234567890)
Out[47]: ‘1,234,567,890‘

时间: 2024-10-09 22:00:47

python学习笔记(11)-语法要求(缩进、标识符、变量)的相关文章

python 学习笔记 11 -- 使用参数使你的程序变得更性感

当然,在之前的系列中,我已介绍如何给 Python 脚本传参,当然,今天不会继续介绍这么无聊的东东.首先使用 python 的sys.argv 传参的话,就固定了参数的个数.顺序以及格式,这么死的规定如何性感? I have a dream , to make my code much sexer ! 今天我们简单介绍一下如何更加随性的给 python 脚本传参.效果如下: [email protected]:/tmp$ python arg.py -h NAME: project with u

python学习笔记11 ----网络编程

网络编程 网络编程需要知道的概念 1.网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. 网络(OSI)的7层模型: 应用层--->为应用程序提供网络通信服务 表示层--->数据表示 会话层--->主机间通信(两个应用进程间) 传输层--->端到端的连接,隔离网络的上下层协议,使得网络应用与下层协议无关 网络层--->寻找最优路径,转发数据包 数据链路层---&

python学习笔记--基本语法

1.常量与变量 常量: 一旦赋值,就不可再改变,换句话说,就是不能对它重新赋值.Python不存在常量 字面常量:一个单独出现的量,未赋值给任何变量或常量 变量: 是一个名字,在赋值符号的左边,这个名字可以指代赋值符号右边的内容 In [37]: i = 3 In [38]: print(i) 3 2.系统类型 Python是强类型语言--指不同类型之间不能相互计算: 运算的时候会做类型检查 Python是动态类型语言--变量可以重新赋值为其他类型 n [39]: 3 + 3 Out[39]: 

Python学习笔记11—函数

建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__=="__main__": add_function(2,3) 在定义函数的时候,参数可以像前面那样,等待被赋值,也可以定义的时候就赋给一个默认值.例如 >>> def times(x,y=2): #y的默认值为 2 ... print "x=",x ... prin

Python学习笔记11:标准库之文件管理

1 os包 os包包括各种各样的函数,以实现操作系统的许多功能.这个包非常庞杂.os包的一些命令就是用于文件管理. 我们这里列出最常用的: mkdir(path) 创建新目录,path为一个字符串,表示新目录的路径.相当于$mkdir命令 比如说我们要新建目录new: import os os.mkdir('/home/Document/new') rmdir(path) 删除空的目录,path为一个字符串,表示想要删除的目录的路径.相当于$rmdir命令 listdir(path) 返回目录中

Python 学习笔记(一)语句,变量,函数

今天抽时间看了一下python.感觉很好,它与编译性语言不同.c,c++,java,c# 等都是编译性语言,也就是需要先进行编译,然后 在链接,才生成二进制可运行文件(java,C#除外,需要虚拟机才可以运行),但是也需要编译. python 是一种典型的解释性语言.他的最大的特点就是类似于脚本语言,例如:Shell编程,js,等,不需要编译. 今天学得知识为python的基本语法:包括:语句,定义变量,定义函数.下面进行对所学习的内容进行一下总结,以便以后能够温故 而知新 . 语句: 首先介绍

python学习笔记(第一周):变量

在python中申明一个变量,不需要申明变量的类型,如下: name = "Eraser Li" 打印变量,代码如下: print("My name is",name) 控制台输出结果: My name is Eraser Li 变量赋值给变量: name2 = name print("My name is",name2) 控制台输出结果: My name is Eraser Li 现在给name重新赋值: name = "Eraser

python 学习笔记 12 -- 写一个脚本获取城市天气信息

最近在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么能够显示后最重要的就是显示什么的问题了.最容易想到的就是显示时间啊,CPU利用率啊,IP地址之类的.那么我觉得呢,如果能够显示当前时间.温度也是甚好的,作为一个桌面小时钟还是很精致的. 1. 目前有哪些工具 目前比较好用的应该是 weather-util, 之前我获取天气信息一般都是通过它. 使用起来也很简单: (1) Debian/Ubuntu 用户使用 sudo apt-get install weather-util 安装

01-Python学习笔记-基础语法

Python标识符 -d           在解析时显示调试信息 -O           生成优化代码 ( .pyo 文件 ) -S           启动时不引入查找Python路径的位置 -v            输出Python版本号 -X           从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时. -c cmd     执行 Python 脚本,并将运行结果作为 cmd 字符串. file           在给定的python文件执行python脚本. P

python基础教程_学习笔记11:魔法方法、属性和迭代器

魔法方法.属性和迭代器 在python中,有的名称会在前面和后面各加上两个下划线,这种写法很特别.它表示名字有特殊含义,所以绝不要在自己的程序中使用这种名字.在python中,由这些名字组成的集合所包含的方法叫做魔法(或称特殊)方法.如果对象实现了这些方法中的某一个,那么这个方法会在特殊的情况下被python调用,而几乎没有直接调用它们的必要. 准备工作 为了确保类是新型的,应该把赋值语句__metaclass__=type放在你的模块的最开始,或者(直接或间接)子类化内建类(实际上是类型)ob