Python 文档阅读02
来源:互联网 发布:局域网电话软件 编辑:程序博客网 时间:2024/06/05 09:04
if语句
else是可以选择的,elif(else if缩写)也是可以0个或多个。
>>> x = int(input("Please enter an integer: "))Please enter an integer: 42>>> if x < 0:... x = 0... print('Negative changed to zero')... elif x == 0:... print('Zero')... elif x == 1:... print('Single')... else:... print('More')...More
for语句
python的for语句与常见的C语言中的for语句是不同的。for语句的作用是遍历序列类型中的每一个项目。如果你想要在迭代中更改某些值,建议通过切片拷贝来操作。如下
>>> # Measure some strings:... words = ['cat', 'window', 'defenestrate']>>> for w in words:... print(w, len(w))...cat 3window 6defenestrate 12>>>>>> for w in words[:]: # Loop over a slice copy of the entire list.... if len(w) > 6:... words.insert(0, w)...>>> words['defenestrate', 'cat', 'window', 'defenestrate']
range()函数
如果想要一个只包含数字的序列,可通过内置函数range()来操作;该函数共有3个参数,当只填写一个时,默认改值为结束位置,起始为0,步数为1;当填写两个时,默认为起始与结束位置,步数为1;很显然,第三个参数为步数;注意,结束位置永远不包含在内。如下
>>> for i in range(5):... print(i)...01234>>>range(5, 10) 5 through 9range(0, 10, 3) 0, 3, 6, 9range(-10, -100, -30) -10, -40, -70
为了在迭代中显示索引,可通过range()与len()实现;第二种更常用的方法是通过enumerate()函数。
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']>>> for i in range(len(a)):... print(i, a[i])...0 Mary1 had2 a3 little4 lamb>>>>>>li = ['a', 'b', 'c', 'd']>>>for i in enumerate(li, 0):... print(i)... (0, 'a')(1, 'b')(2, 'c')(3, 'd')
为了节省空间,range()返回的是一个迭代器对象,我们只有通过迭代才能将值取出来,for语句可用于迭代,list()也可用于迭代。
>>> print(range(5))range(0, 5)>>> list(range(5))[0, 1, 2, 3, 4]
break, continue语句以及循环中else子句
break用于跳出最近的for或while循环;循环中的else子句是循环结束或条件为假并且不由break终止时执行的语句;try语句中的else当没有异常发生时执行,循环中的else当没有break时执行;continue用于跳出当前循环,进行下次循环,借用自C语言。如下
>>># 素数,只能被自己整除的数>>> for n in range(2, 10):... for x in range(2, n):... if n % x == 0:... print(n, 'equals', x, '*', n//x)... break... else:... # loop fell through without finding a factor... print(n, 'is a prime number')...2 is a prime number3 is a prime number4 equals 2 * 25 is a prime number6 equals 2 * 37 is a prime number8 equals 2 * 49 equals 3 * 3>>>>>> for num in range(2, 10):... if num % 2 == 0:... print("Found an even number", num)# even number 偶数... continue... print("Found a number", num)Found an even number 2Found a number 3Found an even number 4Found a number 5Found an even number 6Found a number 7Found an even number 8Found a number 9
pass语句
pass语句用于占位符,不执行任何操作,但符合语法结构,以示解释器不会报错。
>>> while True:... pass # Busy-wait for keyboard interrupt (Ctrl+C)...>>> class MyEmptyClass:... pass...
定义函数
def是定义函数的关键字,后面还必须要有函数名与括号,参数可选;函数整体的语句是缩进的;函数缩进语句块中的第一行建议写函数注释;函数括号中的参数通常称之为形参,函数调用时的参数称之为实参;函数内部是无法修改外部的变量,除非调用global语句。如下产生斐波拉契数列
>>> def fib(n): # write Fibonacci series up to n... """Print a Fibonacci series up to n."""... a, b = 0, 1... while a < n:... print(a, end=' ')... a, b = b, a+b... print()...>>> # Now call the function we just defined:... fib(2000)0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597>>>>>>>>> f = fib>>> f(100)0 1 1 2 3 5 8 13 21 34 55 89
当函数没有return语句时默认返回None;函数调用是函数对象的调用,如下;result.append(a)
也是result对象调用appen方法。
>>> fib<function fib at 10042ed0>>>>>>> print(fib(0))None>>>>>> def fib2(n): # return Fibonacci series up to n... """Return a list containing the Fibonacci series up to n."""... result = []... a, b = 0, 1... while a < n:... result.append(a) # see below... a, b = b, a+b... return result...>>> f100 = fib2(100) # call it>>> f100 # write the result[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
函数定义的更多方法
默认参数值
最常用的方式是对一个或多个参数指定默认值,这样当函数被调用时可以传入更少的值。
def ask_ok(prompt, retries=4, reminder='Please try again!'): while True: ok = input(prompt) if ok in ('y', 'ye', 'yes'): return True if ok in ('n', 'no', 'nop', 'nope'): return False retries = retries - 1 if retries < 0: raise ValueError('invalid user response') print(reminder)
示例中有三种调用方式:
- 必须给一个参数:
ask_ok('Do you really want to quit?')
- 给两个参数:
ask_ok('OK to overwrite the file?', 2)
- 给三个参数:
ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
示例中还展示了in
关键字,该关键字用来测试某个元素是否在该序列中。
i = 5def f(arg=i): print(arg)i = 6f()
参数的默认值只会计算一次,所以上示例中会打印5;但如果默认值是可变的,情况就有可能不同。如下示例
def f(a, L=[]): L.append(a) return Lprint(f(1))print(f(2))print(f(3))# 输出,因为L是指向[]的位置,而[]中的值是可变的[1][1, 2][1, 2, 3]# 下面方式可以避免def f(a, L=None): if L is None: L = [] L.append(a) return L
关键字参数
函数可通过kwarg=value
传值。
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'): print("-- This parrot wouldn't", action, end=' ') print("if you put", voltage, "volts through it.") print("-- Lovely plumage, the", type) print("-- It's", state, "!")
调用上面函数,必须的参数有一个,可选的有两个。
可通过一下方式调用:
parrot(1000) # 1 positional argumentparrot(voltage=1000) # 1 keyword argumentparrot(voltage=1000000, action='VOOOOOM') # 2 keyword argumentsparrot(action='VOOOOOM', voltage=1000000) # 2 keyword argumentsparrot('a million', 'bereft of life', 'jump') # 3 positional argumentsparrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword
下面是错误的调用
parrot() # required argument missingparrot(voltage=5.0, 'dead') # 位置参数要放前面,关键字参数必须放位置参数后面parrot(110, voltage=220) # duplicate value for the same argumentparrot(actor='John Cleese') # unknown keyword argument
*name可以接受一个tuple以及将多余的参数收进去;**name可以接受一个字典;前者必须在后者前面
def cheeseshop(kind, *arguments, **keywords): print("-- Do you have any", kind, "?") print("-- I'm sorry, we're all out of", kind) for arg in arguments: print(arg) print("-" * 40) keys = sorted(keywords.keys()) for kw in keys: print(kw, ":", keywords[kw])
调用如下
cheeseshop("Limburger", "It's very runny, sir.", "It's really very, VERY runny, sir.", shopkeeper="Michael Palin", client="John Cleese", sketch="Cheese Shop Sketch")
打印如下
-- Do you have any Limburger ?-- I'm sorry, we're all out of LimburgerIt's very runny, sir.It's really very, VERY runny, sir.----------------------------------------client : John Cleeseshopkeeper : Michael Palinsketch : Cheese Shop Sketch
任意参数的列表
>>> def concat(*args, sep="/"):... return sep.join(args)...>>> concat("earth", "mars", "venus")'earth/mars/venus'>>> concat("earth", "mars", "venus", sep=".")'earth.mars.venus'
参数列表拆包
是用或者*分别对list与dict进行拆包传入
>>> list(range(3, 6)) # normal call with separate arguments[3, 4, 5]>>> args = [3, 6]>>> list(range(*args)) # call with arguments unpacked from a list[3, 4, 5]
>>> def parrot(voltage, state='a stiff', action='voom'):... print("-- This parrot wouldn't", action, end=' ')... print("if you put", voltage, "volts through it.", end=' ')... print("E's", state, "!")...>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}>>> parrot(**d)-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
- Python 文档阅读02
- Python 文档阅读01
- 如何有效地阅读python文档
- Python Requests文档阅读笔记
- 【Python扩展阅读EasyGui 学习文档【超详细中文版】】
- VLC 学习计划---文档阅读
- Resin文档阅读笔记
- pjLib文档阅读概要
- pjLib文档阅读概要
- AMS2100文档阅读摘要
- srilm 阅读文档1
- srilm 阅读文档2
- srilm 阅读文档3
- srilm 阅读文档4
- srilm 阅读文档5
- srilm 阅读文档6
- srilm 阅读文档7
- srilm 阅读文档8
- Spring Aop
- 【总结】-博客大赛之我见
- linux: 找到磁盘/目录中最大的n个文件
- python读取gzip格式及普通格式网页的方法
- shell脚本笔记总结一
- Python 文档阅读02
- 剑指offer(六)旋转数组的最小数字
- BZOJ3589动态树,BIT+容斥
- XML数据格式
- rxjs简单入门
- java设计模式之工厂模式
- Servlet实现日志管理
- PX4代码学习系列博客(5)——在px4中添加自己的模块
- unity3d 建立3D中文立体字