在mac环境下记录Python的学习笔记之函数+异常

作者: admin 分类: Python 发布时间: 2019-03-28 22:50  阅读: 155 views

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的学习笔记之函数+异常

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

更多阅读