python赋值语句格式_Python学习笔记整理(九)Python赋值表达式和打印

赋值语句,表达式语句,打印

一、赋值语句

赋值语句给对象命名,基本形式是在等号左边写赋值语句的目标,右边写赋值的对象。左边可以是变量名或对象元素,而右侧的对象可以是任何会计算得到的对象表达式 。

1、赋值语句的特性

* 赋值语句建立对象引用值。建立变量到对象的应用。

* 变量名在首次赋值时会被创建。

当这个变量名出现在表达式中,就会被其所引用值取代

*变量名在引用前必须先赋值。也就是必须建立变量名到对象的引用关系。

* 隐式赋值语句

import、from、del、class、for、函数参数。等模块导入,函数和类的定义,for循环变量以及函数参数都是隐式赋值运算。

2、赋值语句的形式

运算 解释

diege='diege' 基本形式

diege,lily='yum','wang' 元组赋值运算(位置性)

[diege,lily]=['yum','YUM'] 列表赋值运算(位置性)

a,b,c,d='dieg'

序列赋值运算,通用性 #MS不行,数量要一致。

name=uname='diege' 多目标赋值运算

diege += 43 增强赋值运算(相当于diege=diege+43)

* 元组及列表分解赋值

第二,第三种形式是相关的,当在“=”左边编写元组或列表时,Python会按照位置把右边对象和左边的目标从左到右相配对。

* 序列赋值语句

在新的Python版本,元组和列表赋值语句已统一为现在所谓的序列赋值语句的实例。--任何变量名的需里都可以赋值给任何值的序列。而Python会按位置一次赋值一个元素。如第四行。把变量名的元组和字符串的字符对应起来。

*多重目标赋值

如第五行,赋值相同对象给右边所有目标。

*增强赋值语句

以简洁的方式结合表达式和赋值语句的简写形式 。增强形式输入比较少,运行更快。在Python中,每个二元表达式运算符的都有增强赋值语句。

3、序列赋值

1)、基本

>>> nudge=1

>>> wink=2

>>> A,B=nudge,wink

>>> A,B

(1, 2)

>>> [C,D]=[nudge,wink]

>>> C,D

(1, 2)

右侧可以是任何类型的序列,包括变量。只要长度相等即可

2)、高级序列赋值语句模式

注意:虽然可以在“=”符号两侧混合和匹配序列类型,右边元素的数目还是要左边的变量的数目相同,不然会产生错误。

想要更通用的话,就需要使用分片了

>>> string='diege'

>>> a,b,c=string[0],string[1],string[2]

>>> a,b,c

('d', 'i', 'e')

>>> a,b,c=list(string[:2])+[string[2:]]

>>> a,b,c

('d', 'i', 'ege')

可以赋值嵌套序列

>>> ((a,b),c)=('DI','GE')

>>> a,b,c

('D', 'I', 'GE')

4、多目标赋值语句

>>> a=b=c=d='diege'

>>> a,b,c,d

('diege', 'diege', 'diege', 'diege')

多目标赋值以及共享引用

上面一个对象,四个变量共享(全指向内存同一对象),这种对于不可能变的类型而言没有问题,如果是可变的类型就需要小心。

5、增强赋值语句

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

增强赋值以及共享引用

>>> L=[1,2]

>>> M=L

>>> L=L+[3,4] #指向新的对象

>>> M,L

([1, 2], [1, 2, 3, 4])

>>> L=[1,2]

>>> M=L

>>> L+=[3,4] #修改了原来的对象

>>> M,L

([1, 2, 3, 4], [1, 2, 3, 4])

这只对列表和字典这类可变对象才重要,而且相当罕见的情况。如果你需要打破共享引用值的结构,就要对可便对象进行拷贝。

二、变量命名规则

语句:(下划线或者字母)+(任意数目的字母,数字或下划线)

注意:

区分大小写,DIEGE和diege不同。Python程序区分大小写

1、禁止使用保留字

2、命令习惯

* 以单一下划线开头的变量名(_X)不会被from module import *语句导入的。

* 前后有下划线的变量名(__X__)是系统定义的变量名,对解释器有特殊意义。

* 以两个下划线开头,但结尾没有两个下划线的变量名(__X)是类本地(压缩)变量。

* 通过交互模式运行时,只有单个下划线变量(_)会保存最后的表达式结果。

3、变量名没有类型,但对象有

三、表达式语句

1、表达式语句介绍

在Python中可以使用表达式作为语句 (本身只占一行)。但是,因为表达式结果不会被存储,只有当表达式工作并作为附加的效果,这样才有意义。通常在两种情况下表达式用语句。

*调用函数和方法

有些函数和方法会做很多工作,而不会返回值,这种函数在其他语言中有时称为流程。因为他们不会返回你可能想保留的值,所以你可以用表达式语句调用这些函数。

*在交互模式提示符下打印值

Python会在交互模式命令行中响应输入的表达式的结果,从技术上讲,这些也是表达式语句,作为输入print语句的简写方法。

常见的python表达式语句

运算 解释

spam(eggs,ham) 函数调用

spam.ham(eggs) 方法调用

spam 在交互模式解释器内打印变量

spam < ham and ham != eggs 符合表达式

spam < ham < eggs 范围表达式

注意:虽然表达式在python中可以作为语句出现,但语句不能作为表达式。例如python不让你把赋值语句(=)嵌入其他表达式中。这样做的理由是为了避免常见的编码错误。当用“==”做相等测试时,不会打成“=”而意外改变量的值。

2、表达式语句和在原处修改

>>> L=[1,2]

>>> L.append(3)

>>> L

[1, 2, 3]

注意不要写成来L=L.append(3)

赋值语句

对列表调用append,sort,reverse这类在原处修改的元算,一定是对列表在原处的修改,但这些方法在列表修改后并不会把列表返回。

四、打印语句

1、打印语句

print语句可以实现打印—只是对程序员友好的标准输出流的接口而已。技术上讲,这是把对象转换为其他文本表达式形式,然后发送给标准输出。

标准输出流与C语言的stdout类似,通常对应到启动Python程序所在的窗口(除非shell上重定向到了文件或管道中)

print 语句形式

运算 解释

print 'diege,test'

把对象打印至sys.stdout,在元素之间增加一个空格,以及在末尾增加换行符。

print 'diege,test'

一样,但是在文本末尾没有加换行符字符。

>>> myfile=open('/tmp/pydata','w')

>>> print >> myfile, "diege,test"

把文件传给myfile.write,而不是sys.stdout.write

注意:print的内容是字符串一定要用引号扩起来。

可是使用字符串合并和格式化工具,自己创建输出的的字符串,之后再一次打印出字符串。

>>> x='hello'

>>> y='world'

>>> print '%s,%s' % (x,y)

hello,world

2、重定向输出流

print x

等价于

import sys

sys.stdout.write(str(x)+'\n')

可以把sys.stdout重新赋值给标准输出流意外的的东西,这种等效的方式提供了一种方法,可以让print语句将文字传送到其他地方。

>>> import sys

>>> sys.stdout=open('/tmp/python.log','a',0)

>>> x,y,z=1,2,3

>>> print x,y,x

>>> print x,y,z

$ tail -f /tmp/python.log

事实上可以将sys.stdout重设为非文件的对象。只要该对象有预期的协议(write方法)。当该对象是类时,打印的文字可以定位并通过任意方式进行处理。

不过,为了基于print的程序重定向,sys.stdout重设提供了修改每个print语句以外的便利方式。或者使用系统shell重定向语法。

上面有一个问题,打印到文件后需要切换回来。不然所有的print输出都打印到文件来了

>>> import sys

>>> temp=sys.stdout

>>> sys.stdout=open('log.txt','a')

>>> print 'diege'

>>> print 1,2,3

>>> sys.stdout.close()

>>> print 1,2,3

Traceback (most recent call last):

File "", line 1, in

ValueError: I/O operation on closed file

>>> sys.stdout=temp

>>> print 1,2,3

1 2 3

网络上有一个比较好的范例说明

http://www.cnblogs.com/MikeZhang/archive/2012/01/19/ioRedirect.html

这样的方式太麻烦。因此增加了print的扩展功能,从而没有必要非得这么做

当print 语句以>>开始,后面再跟着输出的文件对象(或其他对象)时,该print语句可以将文字传给该对象的write方法,但是不用重设sys.stdout。因为这种重定向是暂时的。普通的print语句还是会继续打印到原始的输出流的。

>>> log=open('log.txt','a',0)

>>> x,y,z=10,11,12

>>> print >> log,x,y,z

>>> diege='diege test'

>>> print >> log,diege

>>> print 123

123

>>> log.close()

>>> print 123

123

如果需要在同一个程序中打印到文件以及标准输出流。print的>>形式就很方便,然而,如果你使用这种形式,需要提供一个文件对象(或者和文件对象一样有write方法的对象),而不是文件名字符串。

这种print的扩展形式通常也用于把错误信息打印到标准错误流sys.stderr.可以使用文件write的方法愿意及自动设置输出的格式,或者重定向语法打印:

>>> import sys

>>> sys.stderr.write(('Bad!'*8)+'\n')

Bad!Bad!Bad!Bad!Bad!Bad!Bad!Bad!

>>> print >> sys.stderr,'Bad!'*8

Bad!Bad!Bad!Bad!Bad!Bad!Bad!Bad!

在ptyhon3.0中 ,print语句将变为内置函数,功能相同,但语法稍有不同。目标文件和列结尾行行为是由关键词参数赋值的。例如,语句 print x,y会调用print(x,y),而print >> f,x会变成print (x,file-f,end='').

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值