飞道的博客

新手入门Python核心笔记三:字典、循环、输入输出、错误和异常、函数【我从没见过你 但我懂你】

350人阅读  评论(0)

Python核心笔记一:欢迎来到Python世界【我从没见过你 但我懂你】

Python核心笔记二:学习基础、对象、字符串、列表和元组【我从没见过你 但我懂你】

第七章映射和集合类型

字典是Python 中唯一的映射类型。

字典:

dict1 = ,‘name’:’earth’,’port’:80- for key in dict1.keys():

print ‘key=%s, value=%s’% (key,dict1*key+)

 

映射类型内建函数:

  • dict.clear() 删除字典中的所有元素
  • dict.fromkeys(seq, val=None) 返回一个新字典,seq 为键,val 为值
  • dict.get(key, default=None) 返回字典中 key 的值,若无此键则返 default
  • dict.has_key(key) 是否存在key 键,返回布尔值
  • dict.items() 返回一个包括字典中键值对元组的列表
  • dict.keys() 返回一个字典中的键的列表
  • dict.values() 返回一个包含字典中所有值的列表
  • dict.update(dict2) 将字典 dict2 的键值对添加到字典 dict 中去

不允许一个键对应多个值

键必须是可哈希的对象。像列表和字典这样的可变类型,由于它们不是可哈希的,所以不能作为键

集合类型:

  • 现已成为Python 的基本数据类型
  • 两种类型:可变集合(set)和不可变集合(frozenset)
  • 可用 set()和 frozenset()来分别创建可变集合跟不可变集合

适用于所以集合类型的内建方法:

  • s.issubset(t) 判断 s 是否是 t 的子集,返回布尔值
  • s.issuperset(t) 判断 s 是否是 t 的超集,返回布尔值
  • s.union(t) 返回新集合,s 跟t 的并集
  • s.intersetion(t) 返回新集合,s 跟t 的交集
  • s.difference(t) 返回新集合,其成员是 s 的成员,但不是t 的成员

 

第八章条件和循环

if 循环:

if expression1:

expr1_true_suite

elif expression2:

expr2_true_suite

elif expression3:

expr3_true_suite

else:

None_of_the_above_suite

Python 不支持 switch/case 语句,但完全可以用 if/else 的结构来代替

三元操作符:X if C else Y (如果条件 C 成立,则结果为 X,否则为 Y)

 

while 语句:

while expression:

suite_to_repeat

 

for 语句:

for iter_var in interable:

suite_to_repeat

 

pass 语句:Python 中提供 pass 语句,表示不做任何事,NOP(No Operation)

def foo_func(): #空函数

pass

迭代器和 iter()函数:

  • 迭代器就是有一个 next()方法的对象
  • 对一个对象调用 iter()方法就可以得到它的迭代器

 

列表解析:

列表解析(list comps)来自函数式编程语言 Haskell。它是一个非常有用、简单而且灵活的工具,可以用来动态地创建列表。

Python 早就支持函数式编程特性,例如 lambdamap()filter()

 

lambda 允许用户快速地创建只有一行的函数对象.例如:map(lambda x:x ** 2, range(6))

 

第九章文件和输入输出

文件内建函数(open()和 file()):

  • open()语法:file_object = open(file_name, access_mode=‘r’,buffering=-1)
  • open()和 file()函数具有完全相同的功能,一般来说,建议使用 open()来读文件,在你想说明你是处理文件对象的时候使用 file(),例如 if isinstance(f, file)

文件内建方法:

  • 输入:read(),readlines(),for eachLine in file
  • 输出:write(),writelines() [注:没有writeline()方法]
  • 文件内移动:seek() 0,1,2 分别代表文件开头,当前位置,文件末尾

杂项操作:

保留行分隔符:

使用 read()或者 readlines()从文件中读取行时,Python 并不会删除行结束符,类似的,write()或 writelines()也不会自动的加入行结束符,这得由程序员自己完成。

行分隔符和其他文件系统的差异:

不同的操作系统对行结束符的规定是不同的,但Python 的os 模块已经替程序员解决了这个问题,只要导入了 os 模块,其属性会自动校准文件系统,设置为正确值。

命令行参数:

  • sys.argv 是命令行参数的列表
  • len(sys.argv)是命令行参数的个数(也就是 argc)

 

第十章错误和异常

Python 中常见的异常:

  • NameError : 尝试访问一个未申明的变量
  • ZeroDivissionError : 除数为零
  • SyntaxError : Python 解释器语法错误
  • IndexError : 请求的索引超出序列范围
  • KeyError : 请求一个不存在的字典关键字
  • IOError : 输入\输出错误
  • AttributeError : 尝试访问未知的对象属性
  • KeyboardInterrupt : 中断异常
  • BaseException : 所有异常的基类

 

检测和处理异常:try-except 和 try-finally

处理多个异常的时候可以用多个 except,也可以用一个 except,然后将异常放入一个元组里

不推荐使用空 except 语句

else 子句:try-except-else:在 try 范围内没有异常被检测到时,执行 else 子句

finally 子句:try-except(-else)-finally:无论异常是否发生,是否捕捉,都会执行的一段代码。

raise 语句:触发异常。一般语法:

raise [SomeException [,args [,traceback]]

第一个参数:SomeException:触发异常的名字

第二个参数:args:可选,作为一个对象或者对象的元组传给异常第三个参数:traceback:可选,很少用

断言:断言是一句必须等价于布尔真的判定,否则将产生 AssertionError(断言错误)的异常,同时也说明是假。

语法:assert expression[, arguments]

建议跟 try-except 连用,将断言语句放在try 中

sys 模块中的 exc_info()函数,通过其提供的一个 3 元组信息同样可以捕捉异常信息:

sys.exc_info()得到的元组: exc_type:异常类exc_value:异常类的实例

exc_traceback:跟踪记录对象

不过,在未来的 python 中,这三个对象将被逐步停用,并最终移除。

 

第十一章函数和函数式编程

创建函数:

def function_name(arguments):

“function_documentation_string” function_body_suite

前向引用:Python 也不允许在函数未声明之前,对其进行引用或调用。

Python 支持在外部函数的定义体内创建内嵌函数

函数中使用默认参数会使程序的健壮性上升到极高的级别。

Python 不是也不大可能会成为一种函数式编程语言,但是它支持许多有价值的函数式编程语言构建。

函数式编程的内建函数:

Filter(func, seq):

 

调用一个布尔函数 func 来迭代遍历每个 seq 中的元素;返回一个使 func 返回值为 true 的元素的序列

Map(func, seq1[,sql2…]):

将函数 func 作用于给定的序列 seq 中的每个元素,并用一个列表来提供返

回值

Reduce(func, seq):

将一个二元函数作用于 seq 序列的元素,每次携带一对(先前的结果以及下一个序列元素),连续地将现有的结果和下一个值作用,最后减少我们的序列为一个单一的返回值

变量作用域:

全局变量除非被删除,否则它们存活到脚本运行结束,且对所有的函数都是可访问

的。

为了明确地引用一个已命名的全局变量,必须使用 global 语句。

第十二章模块

模块支持从逻辑上组织Python 代码。

与其他可以导入类(class)的语言不同,Python 带入的是模块或模块属性。

语 法 : import module1[,module2[,…]]

from module import name1*,name2*,…++ from module import name as shortname from module import *

 

import 语句的模块顺序:

  • Python 标准库模块
  • Python 第三方模块
  • 应用程序自定义模块

 

导入(import)和加载(load):

一个模块之恩那个被加载一次,无论它被导入多少次。

模块内建函数:

    import ()函数: import (module_name[,globals[,locals[,fromlist]]]) globals()和 locals()分别返回调用者全局和局部名称空间的字典。

reload()重新导入一个已经导入的模块: reload(module) 使用 reload()时候必须是全部导入,而不是使用 from-import。

禁止模块的某个属性导入,可以在该属性名称前加一个下划线:import foo._bar

 


转载:https://blog.csdn.net/A_7878520/article/details/116208251
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场