Python语句和控制流

1.if语句

当条件成立时执行语句块,经常与else、elif(相当于else if)配合使用

if i == 1:
    print("等于1")
elif i > 1:
    print("大于1")
else:
    print("小于1")

2.for语句

遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素

下面的例子就是求50-100之间的质数(math.sqrt是开方)

import math

for i in range(50, 100 + 1):
    for j in range(2, int(math.sqrt(i)) + 1):
        if i % j == 0:
            break
    else:
        print i

顺便提一下range()函数。

range([start,] stop [, step])

start  可选参数,起始数

stop   终止数,如果 range 只有一个参数x,则产生一个包含 0 至 x-1 的整数列表

step   可选参数,步长

3.while语句

当条件为真时,执行循环语句块,如下例子

count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1

print "Good bye!"

4.try语句

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常.

下面是简单的例子:

import sys
try:
    s = raw_input('Enter something --> ')  #可能得到异常的语句
except EOFError:       #锁定是哪种异常
    print 'ERROR INPUT !'   #出现异常的处理方法
    sys.exit()
print s

try-finally 语句无论是否发生异常都将执行最后的代码。

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
finally:
    print "Error: 没有找到文件或读取文件失败"

5.CLASS语句

用于定义类,下面是一个例子

首先第一点,你会发现Class的定义中有一个括号,这是体现继承的地方。 Java用extends,C#、C++用冒号(:),Python则用括号了。从括号中包含着两个值,聪明的你一定可以发现:Python支持多重继承;

第二点,init是Class中的构造函数,两种不同形式的构造函数体现了Python支持函数重载。在构造函数中,有一个特别的参数self,其含义与我们在Java和C#中常见的this是一样的。

class GrandPa:
    def __init__(self):
         print('I\'m GrandPa')


class Father(GrandPa):
     def __init__(self):
         print('I\'m Father!')

class Son(Father):
     """A simple example class"""
     i = 12345
     def __init__(self):
         print('这是构造函数,son')
     def sayHello(self):
         return 'hello world'

if __name__ == '__main__':
     son = Son()
     # 类型帮助信息
     print('类型帮助信息: ',Son.__doc__)
     #类型名称
     print('类型名称:',Son.__name__)
     #类型所继承的基类
     print('类型所继承的基类:',Son.__bases__)
     #类型字典
     print('类型字典:',Son.__dict__)
     #类型所在模块
     print('类型所在模块:',Son.__module__)
     #实例类型
     print('实例类型:',Son().__class__)

6.def语句

用于定义函数和类型的方法

def hello():
    print 'hello python!'

7.pass语句

表示此行为空,不做任何操作,用处就是保持语义、格式的完整性。

if i == 1:
    pass
else:
    pass

8.assert语句

assert语句是一种插入调试断点到程序的一种便捷的方式,当assert语句失败的时候,会引发AssertionError。

assert使用起来还是很方便的,可以避免不必要的未知错误。

def isPrime(n):
    """This function return a number is a prime or not"""
    assert n >= 2
    from math import sqrt
    for i in range(2, int(sqrt(n))+1):
        if n % i == 0:
            return False
    return True

9.with语句

有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。

不使用with语句如下这样写:

file = open("/tmp/foo.txt")
try:
    data = file.read()
finally:
    file.close()

使用with之后,可以这样写:

with open("/tmp/foo.txt")
 as file:
    data = file.read()

Python的with语句是提供一个有效的机制,让代码更简练,同时在异常产生时,清理工作更简单。

10.yield语句

在迭代器函数内使用,用于返回一个元素。自从Python2.5之后,这个语句变成了一个运算符。

yield和return的区别。yield可以向下运行。而return返回后这个函数余下的部分就不能执行了。

def gen():
        print 'enter'
        yield 1
        print 'next'
        return
        print 'next 2'
        yield 2
        print 'next 3'
for i in gen():
        print i

11.raise语句

在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。异常名称标识出具体的类: Python异常处理是那些类的对象。执行raise语句时,Python会创建指定的异常类的一个对象。raise语句还可指定对异常对象进行初始化的参数。为此,请在异常类的名称后添加一个逗号以及指定的参数(或者由参数构成的一个元组)。

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

12.import语句

导入一个模块,全部导入,示例如下:

import codecs
import ConfigParser
import MySQLdb
import sys

13.from import语句

导入一个模块的某些成员,如果你想在程序中用argv代表sys.argv,可以使用 from import语句,在使用的时候建议尽量不需要用from import语句,这样可以使你的程序更加易读,并且没有名字的冲突

from decompile import WjsDecompile
from sys import *

14.import as语句

as后面的内容表示别名,如下面的示例,在使用此模块的功能的时候则需要使用别名,如system.argv

import sys as system

15.in语句

判断一个对象是否在一个字符串、列表、元组

for i in range(1, 5):
    print(i)
else:
    print('for循环结束')

相对的用法有not in,用法相同,含义相反;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容