Python3入门教程二

一、使用 Python 解释器

1.1 可执行Python脚本

只需要在脚本文件开头加上一行文本申明模式

#! /usr/bin/env python[版本号]

再为文件附加执行权限

chmod +x [脚本名]

1.2 源程序编码

默认情况下Python 源码文件以 UTF-8 编码

但是如果你想为源文件选择一个另外的编码也是可行的。

# -*- coding: [编码格式] -*-

注:这个特殊的编码注释必须在代码文件的 第一或第二 行.

二、流程控制

2.1 if语句

if [条件判断][执行语句]
elif [条件判断][执行语句]
elif [条件判断]:
    [执行语句]
else:
    [执行语句]

注:Python中没有switch或case语句,用if…elif…elif…代替

2.2 for语句

Python 中的 for 语句在任意序列 (列表或者字符串) 中迭代时, 总是按照元素在序列中的出现顺序依次迭代.

a = ["cat","dog","world"]
for x in a:
    print(x,len(x))

2.3 range()函式

如果需要的是一个数值序列,使用内建函式range()会很方便

for i in range(5)
	print(i)

2.4 break 和 continue语句,以及循环中的else字句

break:退出最近的循环

continue:退出本次循环

三、函数

3.1 函数定义的更多形式

​ 传入默认值

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!')

3.2 while和if条件判断

3.2.1 in 和 not in

比较操作符 innot in 校验一个值是否在(或不在)一个序列里。

3.2.2 isis not

操作符 isis not 比较两个对象是不是同一个对象,这只跟像列表这样的可变对象有关

3.2.3 比较操作传递

例如 a < b == c 会校验是否 a 小于 b 并且 b 等于 c

3.2.4 andor

也被称为 短路 运算符:它们的参数从左至右解析,一旦可以确定结果解析就会停止。

注:并且比较操作(或其他任何布尔运算)的结果都可以用 not 来取反,这些操作符的优先级低于比较操作符;在它们之中,not 优先级最高, or 优先级最低

四、遍历dict

迭代key,for key in d.迭代value,可以用`for value in d.values()`,如果要同时迭代key和value,可以用`for k, v in d.items()`

4.1判断是否可以进行遍历操作

from collections import Iterable
isinstance([变量名], Iterable) 

五、错误处理、调试

5.1 错误处理

1.错误处理机制

try...except...[except...except...except...]finally...

2.抛出错误

raise:捕获错误目的只是记录一下,便于后续追踪。但是,由于当前函数不知道应该怎么处理该错误,所以,最恰当的方式是继续往上抛,让顶层调用者去处理。好比一个员工处理不了一个问题时,就把问题抛给他的老板,如果他的老板也处理不了,就一直往上抛,最终会抛给CEO去处理。

def bar():
    try:
        foo('0')
    except ValueError as e:
        print('ValueError!')
        raise

5.2 调试

1.第一种调试

print()把可能有问题的变量打印

坏处:将来还得删掉它

2.断言

凡是用print()来辅助查看的地方,都可以用断言(assert)来替代

def foo(s):
    n = int(s)
    assert n != 0, 'n is zero!'
    return 10 / n

def main():
    foo('0')

assert的意思是,表达式n != 0应该是True,否则,根据程序运行的逻辑,后面的代码肯定会出错。如果断言失败,assert语句本身就会抛出AssertionError的错误

坏处:程序中如果到处充斥着assert。不过启动Python解释器时可以用-O(大写英文字母O)参数来关闭assert。关闭后所有的assert语句当成pass来看

3.logging

logging不会抛出错误,而且可以输出到文件

import logging

s = '0'
n = int(s)
logging.info('n = %d' % n)
print(10 / n)

logging.info()就可以输出一段文本。运行,发现除了ZeroDivisionError,没有任何信息。所以需要在import logging之后添加一行配置。

import logging
logging.basicConfig(level=logging.INFO)

好处:

  1. 它允许你指定记录信息的级别,有debuginfowarningerror等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debuginfo就不起作用了
  2. logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件

4.IDE

设置断点,单步运行

六、IO编程

6.1 文件读写

读文件:使用Python内置的open()函数,传入文件名和标示符

f = open('/Users/michael/test.txt', 'r')

如果文件打开成功,就可以read()方法可以一次读取文件的全部内容,Python是读取内容到内存,用str对象来表示

f.read()

调用close()方法关闭文件

f.close()

问题1:如果文件不存在会报IOError错误

解决1:try … finally

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

解决2:with语句

with open('/path/to/file', 'r') as f:
    print(f.read())

问题2:调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了。所以可以反复调用read(size)方法,每次最多读取size个字节的内容。

问题3:读取非文本文件

写文件:写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件

f = open('test.txt', 'w')
f.write('Hello, world!')
f.close()

版权声明:本文为博主原创文章,转载请注明出处!
https://me.csdn.net/qq_39657909

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页