Python学习笔记(三):Time、函数、模块、文件I/O、异常处理(快速入门篇)
来源:互联网 发布:ubuntu 16.04 安装deb 编辑:程序博客网 时间:2024/05/16 08:26
以下是入门python看自强学堂的笔记,网址为http://www.ziqiangxuetang.com/python/python-tutorial.html
同时,补充阅读有http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
Head First Python、Python基础教程
日期和时间(import time、calendar)
不想讲过多,需要函数直接链接
http://www.ziqiangxuetang.com/python/python-date-time.html
函数
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def functionname( parameters ): "函数_文档字符串" function_suite return [expression]
按引用传递参数
所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。
参数
以下是调用函数时可使用的正式参数类型:
- 必备参数——须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
命名参数——调用方用参数的命名确定传入的参数值。你可以跳过不传的参数或者乱序传参,因为Python解释器能够用参数名匹配参数值。
def printme( string ): "打印任何传入的字符串" print stringprintme( str = "My string")
- 缺省参数——缺省参数的值如果没有传入,则被认为是默认值
不定长参数——处理比当初声明时更多的参数,声明时不会命名
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]如:def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var
匿名函数
用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时只能不能包含命令或多个表达式。
匿名函数不能直接调用print,因为lambda需要一个表达式。
lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression #只包含一个语句如:sum = lambda arg1, arg2: arg1 + arg2print "Value of total : ", sum( 10, 20 )
模块
简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。
import module1[, module2[,... moduleN]from modname import name1[, name2[, ... nameN]]from mod_name import *
定位模块
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录
- 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
模块搜索路径存存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
命名空间和作用域
变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称(键)和它们各自相应的对象(值)的字典。
一个Python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。
每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。
Python会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。
因此,如果要给全局变量在一个函数里赋值,必须使用global语句。
global VarName的表达式会告诉Python, VarName是一个全局变量,这样Python就不会在局部命名空间里寻找这个变量了。
Money = 2000def AddMoney(): global Money Money = Money + 1
dir()函数
dir()函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
返回的列表容纳了在一个模块里定义的所有模块,变量和函数。
globals()和locals()函数
根据调用地方的不同,globals()和locals()函数可被用来返回全局和局部命名空间里的名字。
如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名。
如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字。
两个函数的返回类型都是字典。所以名字们能用keys()函数摘取。
reload()函数
当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。
若想重新执行模块里顶层部分的代码,可以用reload()函数。该函数会重新导入之前导入过的模块。
文件I/O
打印到屏幕(print)
print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出
print "Python is really a great language,", "isn't it?";
读取键盘输入(raw_input、input)
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:
- raw_input——raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)
- input——input([prompt]) 函数会假设你的输入是一个有效的Python表达式,并返回运算结果。
文件
open函数
object = open(file_name [, access_mode][, buffering])参数:file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。默认文件访问模式为只读(r)。buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。 如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。 如果取负值,寄存区的缓冲大小则为系统默认。
File对象的属性
file.closed 返回true如果文件已被关闭,否则返回false。file.mode 返回被打开文件的访问模式。file.name 返回文件的名称。file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
Write()方法
Write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
Write()方法不在字符串的结尾不添加换行符(‘\n’):
fileObject.write(string);
read()方法
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
fileObject.read([count]);count是要从已打开文件中读取的字节计数。从文件的开头开始读入,若未传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
文件位置(tell、seek)
Tell()方法告诉你文件内的当前位置;
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
重命名和删除文件(rename、remove)
import osos.rename(current_file_name, new_file_name)os.remove(file_name)
目录
import osos.mkdir("newdir") 在当前目录下创建新的目录们。需要提供一个包含了要创建的目录名称的参数。os.chdir("newdir") 改变当前的目录。需要的一个参数是你想设成当前目录的目录名称。os.getcwd() 显示当前的工作目录os.rmdir('dirname') 删除目录,目录名称以参数传递。在删除这个目录之前,它的所有内容应该先被清除。
异常处理
标准异常
如《head first python》中所说,感觉还是很有用的。
链接:http://www.ziqiangxuetang.com/python/python-exceptions.html
异常处理(try/except)
try:<语句> #运行别的代码except <名字>:<语句> #如果在try部份引发了'name'异常except <名字>,<数据>:<语句> #如果引发了'name'异常,获得附加的数据else:<语句> #如果没有异常发生
使用except而不带任何异常类型,也可以带有多种异常类型
try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。try:<语句>finally:<语句> #退出try时总会执行raise
注意:可以使用except语句或者finally语句,但是两者不能同时使用。else语句也不能与finally语句同时使用
触发异常(raise)
raise [Exception [, args [, traceback]]]语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。def functionName( level ): if level < 1: raise "Invalid level!", leveltry: Business Logic here...except "Invalid level!": Exception handling here...else: Rest of the code here...
注意:为了能够捕获异常,”except”语句必须有用相同的异常来抛出类对象或者字符串。
用户自定义异常
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。
class Networkerror(RuntimeError): def __init__(self, arg): self.args = arg
- Python学习笔记(三):Time、函数、模块、文件I/O、异常处理(快速入门篇)
- python基础2 (函数,模块,文件I/O,异常处理)
- UNIX环境高级编程学习笔记(三)文件共享和其他文件I/O函数
- Python学习笔记(七):Python 文件I/O
- Python入门(十)文件I/O
- python 学习笔记(5) 文件I/O及方法
- Python学习笔记(八)——文件I/O
- Python基础教程(八):日期和时间、文件I/O、异常处理
- Python学习笔记九:文件I/O
- Linux&C语言文件学习笔记(三):文件I/O与系统API
- JAVA exception异常处理+I/O操作读写文件 笔记
- JAVA exception异常处理+I/O操作读写文件 笔记
- 雾山的Java学习笔记---I/O(三)(处理流)
- Python学习笔记(十三)-- Python文件I/O(一)
- Python学习笔记(十四)-- Python文件I/O(二)
- # python学习笔记(二)--函数和异常处理
- C语言学习笔记之文件I/O(fgets()函数和fputs()函数)
- Python笔记(3)----日期和时间、函数、文件I/O、File方法
- 使用winusb可以实现USB IAP功能
- Android View 绘制流程
- BestCoder Round 38-1001 Four Inages Strategy
- Ubuntu常见问题
- 对于高版本ADT,手动创建Helloworld程序
- Python学习笔记(三):Time、函数、模块、文件I/O、异常处理(快速入门篇)
- 浅析设计模式之模板模式
- hdu 3364 Lanterns(高斯消元模板题+亦或方程)
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料
- SZU 2015 Winter Training Day#6
- 数据库连接池的工作原理
- P123 第28题 大小写转化 其他不变
- redis笔记整理1
- 找数字