在mac环境下记录Python的学习笔记之函数+异常
1.python自定义函数
规则:
a.函数代码以def关键词开头,后面是函数标识符名称和圆括号()
b.任何入参和自变量必须放在圆括号中间
c.函数的第一行可以选择性的使用字符串,存放函数说明
d.函数内容以冒号开始,缩进格式
e.return表示结束函数且返回一个值,不带return表示返回none
#定义函数
def functionname(parameters):
"这是一个自定义方法"
print parameters
return [expression]
#调用函数
functionname("调用函数")
2. python参数的传递
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
#不可变对象
def ChangeInt(a):
a = 10
b = 2
ChangeInt(b)
print b # 结果是 2
# 可写函数说明
def changeme( mylist ):
"修改传入的列表"
mylist.append([1,2,3,4]);
print "函数内取值: ", mylist
return
# 调用changeme函数
mylist = [10,20,30];
changeme( mylist );
print "函数外取值: ", mylist
3. python参数的类型,必备参数、关键字参数、默认参数、不定长参数
#必备参数
def printme( str ):
print str;
return;
#调用必备函数
printme("你好");
#关键字参数、参数顺序不限
def printinfo( name, age ):
print "Name: ", name;
print "Age ", age;
return;
#调用关键字参数
printinfo( age=50, name="miki" );
#默认参数,如果age没传则显示35
def printage( name, age = 35 ):
print "Name: ", name;
print "Age ", age;
return;
#调用默认参数
printage( age=50, name="miki" );
printage( name="miki" );
#可变参数
def printMoreParam( arg1, *vartuple ):
print "输出: "
print arg1
for var in vartuple:
print var
return;
# 调用可变参数
printinfo( 10 );
printinfo( 70, 60, 50 );
4.python 匿名函数-lambda表达式
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )
5. python异常
标准异常
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
LookupError 无效数据查询的基类
IndexError 序列中没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告
异常语法
# try except else异常
try:
<语句> #运行别的代码
except <名字>:
<语句> #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句> #如果引发了'name'异常,获得附加的数据
else:
<语句> #如果没有异常发生
# try finally异常
try:
<语句>
finally:
<语句> #退出try时总会执行
raise
#自定义异常
class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg
原创文章,转载请标明本文链接: 在mac环境下记录Python的学习笔记之函数+异常