python的变量命名规则,Python变量名有哪些
为程序中的内容选择变量名称时,请遵循以下规则:
【1】.语法:(下划线或字母);任意字符、数字或下划线) ) ) ) ) ) )。
变量名称必须以下划线或字母开头,后跟任意数量的字符、数字或下划线
【2】.区分大小写: SPAM和SPAM不同
【3】.禁止使用保留字
=====================================
命名约定:
1 .以单下划线开头的变量名称(x )不会由from module import *语句导入
2 .前后加下划线的变量名称(__X__ )是系统定义的变量名称,对解释器具有特殊意义
3 .以两个下划线开头、最后没有两个下划线的变量名称(__X )是类的局部变量
4 .在交互模式下运行时,最后一个表达式的结果只保存下划线的变量名称__
=====================================
变量名没有类型,但有对象
【类型属于对象而不是变量。 例如,a=3。 此时,a是整数类型,以下语句执行a='3',a又是字符串类型。 这由a变量指向的对象决定,而不是由a变量决定】
引用Python的动态数据类型
=====================================
打印操作
在Python中,print语句只能打印——对程序员友好的标准输出流接口。
技术上,这是将一个或多个对象转换为文本表示形式并将其发送到标准输出或另一个类似文件的流。 更详细地说,在Python中,打印与文件和流的概念密切相关。
文件对象方法:
写入文件的方法是将字符串写入任意文件,print默认情况下将对象打印到stdout流中,并添加了自动格式。 与文件方法不同,使用打印操作时不需要将对象转换为字符串。
标准输出流:
标准输出流(通常称为stdout )只是发送程序文本输出的默认位置。 如果添加标准输入流和错误流,则它只是在脚本启动时创建的三种类型的数据连接之一。 标准输出流通常映射到启动Python程序的窗口,除非操作系统shell将其重定向到文件或管道。
由于标准输出流可以用作Python内置sys模块中的stdout文件对象(例如,sys.stdout ),因此可以使用文件的写方法调用模拟print
=====================================
Python 3.0打印函数
形式如下。
print([object, ][,sep=' '][,end='\n'][,file=sys.stdout]内置函数是由sep分隔的一个或多个对象的文本
在给出sep、end和file的部分的情况下,必须给出——作为关键字参数。 也就是说,必须使用特殊的“name=value”语法,按名称而不是按位置传递参数。
--sep是在每个对象的文本之间插入的字符串,如果未传递,则默认为单个空间。 传递空字符串将隐藏分隔符。
--end是添加到打印文本末尾的字符串,如果未传递,则默认为换行符\n。 传递空字符串将防止在打印的文本末尾移动到下一个输入行
--file指定发送文本的文件、标准流或其他类似文件的对象。 如果未传递,则默认值为sys.stdout。
例子如下。
打印() )
x='spam '
y=99
z=['eggs']
打印(x,y,z ) )。
spam 99 ['eggs']此处不需要将对象转换为字符串,但文件写入方法需要它。 缺省情况下,print调用在要打印的对象之间添加空格。 要取消此空格,请向sep关键字参数发送空字符串或发送选定的替代分隔符。
print(x,y,z,sep=',')
spam,99,['eggs']
print(x,y,z,sep=' ' )
缺省情况下,spam99['eggs']打印将添加行尾字符并退出输出
行。你可以通过向end关键字参数传递一个空字符串来抑制这一点并避免换行,或者可以传递一个自己的不同的终止符(包含一个\n符号来手动地换行):>>> print(x,y,z,end='');print(x,y,z)
spam 99 ['eggs']spam 99 ['eggs']
>>> print(x,y,z,end='...\n')
spam 99 ['eggs']...也可以组合关键字参数来指定分隔符和行末字符串——它们可以以任何顺序出现,但是必须出现在所有要打印的对象的后面:
>>> print(x,y,z,sep='...',end='!\n')
spam...99...['eggs']!这里展示如何使用file关键字——它在单个打印的过程中,直接把文本打印到一个输出文件或者其他的可兼容对象(这其实是流重定向的一种形式)
>>> print(x,y,z,sep='...',file=open('E:\\data.txt','w'))
=================================================================
======================
打印流重定向
如果你想更复杂一点,可以使用以下的方式编写打印操作:
>>> sys.stdout.write('Hello world\n')
Hello world
12------------------------
------------------------
------------------------
------------------------
---------------------------------------------------------
重定向输出流
通常来说,print和sys.stdout的关系如下:
print(x,y) 等价于
import sys
sys.stdout.write(str(X)+' '+str(Y)+'\n')
它通过str手动执行一次字符串转换,再通过‘+’增加一个分隔符和一个换行,并且调用输出流write方法。
作为较长的打印书写形式本身并没有什么用处,不过了解了这就是print语句所做的事情是有用处的,因为有可能把sys.stdout重新复制给标准输出流以外的东西。
换句话说,这种等效的方式提供了一种方法,可以让print语句将文字传送到其他地方。例如:
>>> import sys
>>> sys.stdout = open(r'E:\log.txt','a')
...
>>> print(x,y,z)通过这种方式赋值sys.stdout会把程序中任何地方的每个print都进行重新定向
------------------------
------------------------
------------------------
------------------------
---------------------------------------------------------
自动化流重定向
通过赋值sys.stdout而将打印文字重定向的技巧实际上非常实用。但是有一个问题,就是没有直接的方式可以保存原始的输出流。在打印至文件后,可以切换回来。因为sys.stdout只是普通的文件对象,你可以存储它,需要时恢复它:
>>> import sys
>>> temp = sys.stdout
>>> sys.stdout = open('E:\\log.txt','a')
>>> print('spam')
>>> print(1,2,3)
>>> sys.stdout.flush()
>>> sys.stdout.close()
>>> sys.stdout = temp
>>> print('back here...')
back here...
>>> print(open('E:\\log.txt','r').read())
spam
1 2 3
然而如你所见,像这样的手动保存和恢复原始的输出流包含了相当多的额外工作,因为这种操作出现的相当频繁,一个print扩展功能使得它显得多余。
在Python3.0中,file关键字,允许一个单个的print调用将其文本发送给一个文件的write方法,而不用真正地重设sys.stdout。
例如,如下语句再次把打印的文本发送到一个名为log.txt的文件:
>>> log = open(r'E:\log.txt','a')
>>> print(1,2,3,file=log)
>>> print(4,5,6,file=log)
>>> log.close()这种print的扩展形式通常也用于把错误消息打印到标准错误流sys.stderr,可以使用其文件write方法以及自行设置输出的格式,或者使用重定向语法打印:
>>> sys.stderr.write('Bad!'*8+'\n')
Bad!Bad!Bad!Bad!Bad!Bad!Bad!Bad!
33
>>> print("Bad!"*8,file = sys.stderr)
Bad!Bad!Bad!Bad!Bad!Bad!Bad!Bad!