python基础教程总结4—语句

一、print 和 import 的更多信息

print 打印多个表达式也是可行的,只要将它们用逗号隔开就好:

  1. >>> print(‘Age:‘ , 42)
  2. Age: 42

可以看到,每个参数之间都插入了一个空格符。如果想要同时输出文本和变量值,却又不希望使用字符串格式化的话,那这个特性就非常有用了。

从模块导入函数的时候,可以使用

  1. import  somemodule

或者

  1. from  somemodule import  somefunction

或者

  1. from somemodule import somefunction, anotherfunction, yetanotherfunction

或者

  1. from somemodule import *

只有确定自己想要从给定的模块导入所有功能时,才应该使用最后一个版本。但是如果两个模块都有 open 函数,那又该怎么办?只需使用第一种方式导入,然后像下面这样使用函数:

  1. module1.open(...)
  2. module2.open(...)

还有另外的选择:可以在语句末尾增加一个 as 子句,在该子句后给出名字,或为整个模块提供别名:

  1. >>> import math as foobar
  2. >>> foobar.sqrt(4)
  3. 2.0

也可以为函数提供别名:

  1. >>> from math import sqrt as foobar
  2. >>> foobar(4)
  3. 2.0

对于open函数,可以像下面这样使用:

  1. from module1 import open as open1
  2. from module2 import open as open2

二、赋值

1. 序列解包

多个赋值操作可以同时进行:

  1. >>> x, y, z = 1, 2, 3
  2. >>> print(x, y, z)
  3. 1 2 3

用它交换两个(或更多个)变量:

  1. >>> x, y = y, x
  2. >>> print(x, y, z)
  3. 2 1 3

事实上,这里所做的事情叫做序列解包(sequence unpacking)或可选代解包——将多个值的序列解开,然后放到变量的序列中。当函数或者方法返回元组(或者其他序列或可选迭代对象)时,这个特性尤其有用。它允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易进行访问。

  1. >>> scoundrel = {‘name‘:‘Robin‘, ‘girlfriend‘:‘Marion‘}
  2. >>> key, value = scoundrel.popitem()
  3. >>> key
  4. ‘name‘
  5. >>> value
  6. ‘Robin‘

所解包的序列中元素数量必须和放置在赋值符号 = 左边的变量数量完全一致,否则 Python 会在赋值时引发异常:

  1. >>> x, y, z = 1, 2
  2. Traceback (most recent call last):
  3. File "<stdin>", line 1, in <module>
  4. ValueError: need more than 2 values to unpack
  5. >>> x, y, z = 1, 2, 3, 4
  6. Traceback (most recent call last):
  7. File "<stdin>", line 1, in <module>
  8. ValueError: too many values to unpack (expected 3)

Python 3.0中有另外一个解包的特性:可以像在函数的参数列表中一样使用星号运算符。例如,a, b, *rest = [1, 2, 3, 4]最终会在 a 和 b 都被赋值之后将所有其他的参数都是收集到 rest 中。

2. 链式赋值

链式赋值(chained assignment)是将同一个赋值给多个变量的捷径。   x = y = somefunction()

3. 增量赋值

将表达式运算符(本例中是 + -) 放置在赋值运算符 = 的左边,写成 x +=1。这种写法叫做增量赋值。

  1. >>> x = 2
  2. >>> x += 1
  3. >>> x *= 2
  4. >>> x
  5. 6

对于其他数据类型也适用:

  1. >>> fnord = ‘foo‘
  2. >>> fnord += ‘bar‘
  3. >>> fnord *= 2
  4. >>> fnord
  5. ‘foobarfoobar‘

三、语句块

语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句。在代码前放置空格来缩进语句即可创建语句块。

在Python中,冒号(:)用来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)。当回退到和已经闭合的块一样的缩进量时,就表示当前块已经结束了。

四、条件和条件语句

1. 布尔变量

下面的值在作为布尔表达式的时候,会被解释器看作假(false):

False     None     0     “”     ()      []     {}

换句话说,也就是标准值 False 和 None、所有类型的数字 0(包括浮点型、长整型和其他类型)、空序列(比如空字符串、元组和列表)以及空的字典都为假。其他的一切都被解释为真,包括特殊值 True。

布尔值True 和 False 属于布尔类型,bool函数可以用来(和list、str以及tuple一样)转换其他值。

  1. >>> bool(‘I think, therefore I am‘)
  2. True
  3. >>> bool(42)
  4. True
  5. >>> bool(‘‘)
  6. False
  7. >>> bool(0)
  8. False

因为所有值都可以用作布尔值,所以几乎不需要对他们进行显示转换(可以说Python会自动转换这些值)。

2. 条件执行(if / else / elif)

  1. num = input(‘Enter a number: ‘)
  2. if num > 0:
  3. print(‘The number is positive‘)
  4. elif num < 0:
  5. print(‘The number is negative‘)
  6. else:
  7. print(‘The number is zero‘)

3. 嵌套代码块

  1. name = raw_input(‘What is your name? ‘)
  2. if name.endswith(‘Gumby‘):
  3. if name.startswith(‘Mr. ‘):
  4. print(‘Hello, Mr. Gumby‘)
  5. elif name.startswith(‘Mrs. ‘):
  6. print(‘Hello, Mrs. Gumby‘)
  7. else:
  8. print(‘Hello, Gumby‘)
  9. else:
  10. print(‘Hello, stranger‘)

4. 更复杂的条

4.1 比较运算符

表达式 描述
x==y x 等于 y
x < y x 小于 y
x > y x 大于 y
x >= y x 大于等于 y
x <= y x 小于等于 y
x != y x 不等于 y
x is y x 和 y 是同一个对象
x is not y x 和 y 是不同的对象
x in y x 是 y 容器的成员
x not in y     x 不是 y 容器的成员

在Python 3.0中,比较不兼容类型的对象已经不再可行。

在Python中比较运算和赋值运算一样是可以连接的——几个运算符可以连在一起使用,比如:0 < age < 100。

4.2 相等运算符

如果想要知道两个东西是否相等,应该使用相等运算符,即两个等号 == :

[python] view plaincopy

  1. >>> "foo"=="foo"
  2. True
  3. >>> "foo"=="bar"
  4. False

4.3 is:同一性运算符

is 运算符是判定同一性而不是相等性的。

[python] view plaincopy

  1. >>> x = y = [1, 2, 3]
  2. >>> z = [1, 2, 3]
  3. >>> x == y
  4. True
  5. >>> x == z
  6. True
  7. >>> x is y
  8. True
  9. >>> x is z
  10. False

使用 == 运算符来判定两个对象是否相等,使用 is 判定两者是否等同(同一个对象)。

4.4 in:成员资格运算符

4.5 字符串和序列比较

字符串可以按照字母顺序排列进行比较。

[python] view plaincopy

  1. >>> "alpha" < "beta"
  2. True

其他的序列也可以用同样的方式进行比较,不过比较的不是字符而是元素的其他类型。

[python] view plaincopy

  1. >>> [1, 2] < [2, 1]
  2. True

4.6 布尔运算符

and , or 和 not 运算符就是所谓的布尔运算符。

5. 断言

时间: 2024-10-08 04:15:00

python基础教程总结4—语句的相关文章

Python基础教程(第五章 条件、循环和其他语句)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5329066.html______ Created on Xu Hoo 读者学到这里估计都有点不耐烦了.好吧,这些数据结构什么的看起来都挺好,但还是没法用它们做什么事,对吧? 下面开始,进度会慢慢加快.前面已经介绍过了几种基本语句(print语句.import语句.赋值语句).在深入介绍条件语句和循环语句之前,我们先来看看这几种基

python基础教程_学习笔记7:条件、循环、其它语句

条件.循环.其它语句 print和import 随着更加深入地学习python,可能会出现这种感觉:有些自以为已经掌握的知识点,还隐藏着一些让人惊讶的特性. 使用逗号输出 打印多个表达式,只要将这些表达式用逗号隔开即可: >>> print "age:",28 age: 28 参数之间都插入了一个空格符. 如果在结尾加上逗号,那么接下来的语句会与前一条语句在同一行打印: print "Hello,", print "World!"

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

Python基础教程(第十章 自带电池)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5459376.html______ Created on Marlowes 现在已经介绍了Python语言的大部分基础知识.Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装中还包括一组模块,称为标准库(standard library).之前已经介绍了一些模块(例如math和cmath,其中包

python基础教程:第一章

引言 Python是一门计算机能够理解的语言.功能强大,容易入门.是初学者学习编程语言不错的选择.本篇属于python基础知识.简单介绍了变量.函数.模块和字符串的知识. 内容 主要介绍变量.语句.函数.获取用户输入.模块.字符串等知识. 推荐书籍 <python基础教程> <python核心编程>

Python基础教程(第六章 抽象)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5351415.html______ Created on Xu Hoo 本章将会介绍如何将语句组织成函数,这样,你可以告诉计算机如何做事,并且只需要告诉一次.有了函数以后,就不必反反复复像计算机传递同样的具体指令了.本章还会详细介绍参数(parameter)和作用域(scope)的概念,以及地柜的概念及其在程序中的用途. 6.1

python基础教程_学习笔记9:抽象

抽象 懒惰即美德. 抽象和结构 抽象可以节省大量工作,实际上它的作用还要更大,它是使得计算机程序可以让人读懂的关键. 创建函数 函数可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值.一般来说,内建的callable函数可以用来判断函数是否可调用: >>> import math >>> y=1 >>> x=math.sqrt >>> callable(x) True >>> callab

python基础教程_学习笔记10:异常

异常 什么是异常 Python用异常对象来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行: >>> 1/0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 1/0 ZeroDivisionError: integer division or modulo by

《Python基础教程(第二版)》学习笔记 -&gt; 第九章 魔法方法、属性和迭代器

准备工作 >>> class NewStyle(object): more_code_here >>> class OldStyle: more_code_here 在这两个类中,NewStyle是新式的类,OldStyle是旧式的类,如果文件以__metaclass__ = type 开始,那么两个类都是新式类. 构造方法 构造方法,当一个对象被创建后,会立即调用构造方法.Python中创建一个构造方法,只要把init方法的名字从简单的init修改成__init__