第十一篇:赋值,表达式,print

本文介绍了Python中灵活的赋值方法,包括元组、列表和字符串参与的赋值,并展示了如何利用这些特性进行循环赋值及不对称赋值。此外,还探讨了函数赋值的常见陷阱以及print语句的多种用法。

1.赋值

这边主要介绍python与c语言不同的地方。

pyhon支持tuple方式或list方式赋值。下面是tuple方式赋值的例子。

>>> y, g = 'yes', 'good'
>>> y
'yes'
>>> g
'good'

下面是list赋值的例子。

>>> a = 1
>>> b = 2
>>> [e, f] = [a, b]
>>> e
1
>>> f
2

当然,tuple,list也可以交换赋值。

>>> [a, b] = (1, 2)
>>> a
1
>>> b
2

string也可以参与进来。

>>> str = 'hello'
>>> a, b, c, d, e = str
>>> a
'h'
>>> b
'e'
>>> c
'l'

其实,你怎么想,就是什么结果:)python的赋值功能非常自由,非常好用。

>>> ((a, b), c) = ('sp', 'am')
>>> a
's'
>>> b
'p'
>>> c
'am'

好吧,把它用到循环里吧:

>>> for(a, b, c) in [(1, 2, 3), (8, 4, 3)]:
	print(a)

	
1
8

在3.0里。可以使用 *var 的方式使赋值更自由!

下面表明不对称地赋值是不可以的。

>>> a = [1, 2, 3, 4]
>>> c, d = a

Traceback (most recent call last):
  File "<pyshell#57>", line 1, in <module>
    c, d = a
ValueError: too many values to unpack

下面表明*var的方式在2.x中还没有添加.

>>> c, *d = a
SyntaxError: invalid syntax


下面表明*var可以在3.0中使用:

>>> a, *b = seq
>>> a
1
>>> b
[2, 3, 4]

 

下面表明,指向同一对象带来的麻烦。所以要尽量避免:

>>> a = b = []
>>> b.append(42)
>>> a, b
([42], [42])

 

2.表达式

注意一个非常大的陷阱!!

对于新手而言,要注意函数赋值的陷阱:

>>> L = [1, 2]
>>> L.append(3)
>>> L
[1, 2, 3]
>>> L = L.append(4)
>>> L
>>> 

其实,append(4)返回的是NULL。L = L.append(4)  导致将L.append(4)这个表达式返回值None赋值给了L。结果也就不在期望之中了。

3.print

下面是print的语法:
print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout])

通过逗号,可以同时打印多个变量:

>>> a
[1, 2, 3, 4]
>>> b = (2, 3)
>>> c = 'hello'
>>> print(a, b, c)
([1, 2, 3, 4], (2, 3), 'hello')

如果你是用了3.0。还有很多新加特性:(如果你使用的是2.x(x>=6)版本的,也可以使用3.0版本的print功能。但是,之前要导入它)

from __future__ import print_function
>>> print(x, y, z, sep='')                       # Suppress separator
spam99['eggs']
>>>
>>> print(x, y, z, sep=', ')                     # Custom separator
spam, 99, ['eggs']
>>> print(x, y, z, end='')                        # Suppress line break
spam 99 ['eggs']>>>
>>>
>>> print(x, y, z, end=''); print(x, y, z)        # Two prints, same output line
spam 99 ['eggs']spam 99 ['eggs']
>>> print(x, y, z, end='...\n')                   # Custom line end
spam 99 ['eggs']...
>>>
>>> print(x, y, z, sep='...', file=open('data.txt', 'w'))      # Print to a file
>>> print(x, y, z)                                             # Back to stdout
spam 99 ['eggs']
>>> print(open('data.txt').read())                             # Display file text
spam...99...['eggs']
>>> text = '%s: %-.4f, %05d' % ('Result', 3.14159, 42)
>>> print(text)
Result: 3.1416, 00042
>>> print('%s: %-.4f, %05d' % ('Result', 3.14159, 42))
Result: 3.1416, 00042

在2.6中,打印到file里可以这么使用:

print >> afile, x, y, z

表示将x, y, z变量重定向到afile指向的文件中。

 

用write也可以打印:

>>> import sys                         # Printing the hard way
>>> sys.stdout.write('hello world\n')
hello world
import sys
sys.stdout.write(str(X) + ' ' + str(Y) + '\n')

 

end.



 


 



 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值