出自:https://blog.csdn.net/gavin_john/article/details/49894341
为程序中的事物选择变量名时,要遵循如下规则:
【1】.语法:(下划线或字母)+(任意的字母、数字或下划线)
变量名必须以下划线或字母开头,而后面接任意数目的字母、数字或下划线
【2】.区分大小写:SPAM和spam不同
【3】.禁止使用保留字
=======================================================================================
命名惯例:
1.以单一下划线开头的变量名(_X)不会被from module import *语句导入
2.前后有下划线的变量名(__X__)是系统定义的变量名,对解释器有特殊意义
3.以两个下划线开头、但结尾没有两个下划线的变量名(__X)是类的本地变量
4.通过交互模式运行时,只有单个下划线的变量名(_)会保存最后表达式的结果
=======================================================================================
变量名没有类型,但对象有
【类型属于对象,而不是变量,比如a = 3,这时候a是整数类型,下一句执行a="3",a又变成了字符串类型,这是根据a变量指向的对象决定的,而不是a变量决定的】
=======================================================================================
打印操作
在Python中,print语句可以实现打印——只是对程序员友好的标准输出流的接口而已。
从技术角度上讲,这是把一个或多个对象转换为其文本表达形式,然后发送给标准输出或另一个类似文件的流。更详细地说,在Python中,打印与文件和流的概念紧密相连。
文件对象方法:
文件写入方法是把字符串写入到任意的文件,print默认地把对象打印到stdout流,添加了一些自动的格式化。和文件方法不同,在使用打印操作的时候,不需要把对象转换为字符串。
标准输出流:
标准输出流(通常叫做stdout)只是发送一个程序的文本输出的默认的地方。加上标准输入流和错误流,它只是脚本启动时所创建的3种数据连接的一种。标准输出流通常映射到启动Python程序的窗口,除非它已经在操作系统的shell中重定向到一个文件或管道。
由于标准输出流在Python中可以作为内置的sys模块中的stdout文件对象使用(例如,sys.stdout),用文件的写入方法调用来模拟print成为可能,然而,print很容易使用,这使得很容易就能把文本打印到其他文件或。
=======================================================================================
Python 3.0的print函数
形式如下:
- print([object,...][,sep=' '][,end='\n'][,file=sys.stdout])
sep,end和file部分如果给出的话,必须作为关键字参数给定——也就是说,必须使用一种特殊的“name=value”语法来根据名称而不是根据位置来传递参数。
--sep是在每个对象的文本之间插入的一个字符串,如果没有传递的话,它默认的是一个单个的空格;传递一个空字符串将会抑制分隔符。
--end是添加在打印文本末尾的一个字符串,如果没有传递的话,它默认的是一个\n换行字符。传递一个空字符串将会避免在打印的文本的末尾移动到下一个输入行
--file指定了文本将要发送到的文件、标准流或者其他类似文件的对象;如果没有传递的话,它默认是sys.stdout。
例子如下:
- >>> print()
- >>> x = 'spam'
- >>> y = 99
- >>> z = ['eggs']
- >>> print(x,y,z)
- spam 99 ['eggs']
- >>> print(x,y,z,sep=',')
- spam,99,['eggs']
- >>> print(x,y,z,sep='')
- spam99['eggs']
- >>> 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']!
- >>> 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而将打印文字重定向的技巧实际上非常实用。但是有一个问题,就是没有直接的方式可以保存原始的输出流。在打印至文件后,可以切换回来。因为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
在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()
- >>> 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!