python基础之异常处理与函数

  上次学完了os操作,今天又了解到Python关于异常处理与函数,关于函数及异常处理的定义之类的自行在百度搜索,这里就不细讲了,下面简单的操作一下关于异常处理及函数的代码。

1,异常处理

关于捕获错误。

list = [1,2,3,4,5,6,7,8]
# print(list[14])
dic = {}
# 如果dic有name属性  则修改这个属性   如果没有name属性  则添加name属性
dic['name'] = '张三'
# print(dic['age'])
# 将有可能引起错误的代码放进try里面 如果错误  代码会根据错误类型  进入到指定的execpt
# 这样做的好处   代码不会因为错误而中断执行好处
try :
    # print(list[14])
    print(dic['age'])
except IndexError as e :
    print('捕获了一个索引错误{}'.format(e))
except KeyError as e:
    print('捕获了一个关键字错误{}'.format(e))
# Exception 和 IndexError ,KeyError   为父与子关系
try:
    print([list[21]])
except Exception  as e :
    print('捕获了一个错误{}'.format(e))

抛出错误

try:
    print('这是一个标准格式')
    print(dic['data'])
except IndexError as e:
    print('上一行代码出现了索引错误{}'.format(e))
except KeyError as e:
    print('上一行代码出现了关键字错误{}'.format(e))
# 如果没有出现任何错误  即执行else代码块
else :
    print('目前代码感觉良好')
finally:
    print('代码结束')

# list = []
# print(list[10])

age = input('请输入你的年龄')
age = int(age)
if age < 0 :
    print('年龄不对')
    # raise 升起  : 在此指抛出错误
    raise Exception('年龄不对,请务必输入一个大于0的数值')

2,函数

简单的函数  

关于变量的解释及代码

参数

def myself():   #define  定义   def +方法名字  + (参数(形参))
    print('今天是2018年7月4日,我到智游上班的第一天,感觉自己萌萌哒,‘安抚肌肤几个为火锅底偶发及大好时光承,’诺方式简单的就是放开水立方的手机放到手机费时间快递费')
    print('爱打瞌睡噶是个,'
          '敖德萨所大所大'
          '大大大所大所'
          '大叔大婶多'
          )
    print('空军开始感觉是根据核查')
myself()

#无参数无返回值
def fun1():
    print('Hello World')
fun1()
# 参数的实质就是变量
# 声明方法时候的参数  叫做形式参数

def fun1(name):
    print('大家好,我的名字是{}'.format(name))
# 声明方法的时候  如果有参数   那么调用方法一定也要有参数
# 声明方法的时候的参数叫做形参(形参极为变量)
# 调用方法时候的参数叫做实参(实参为给变量赋值)
fun1('渣渣辉')

关键参数

#关键参数----------------------------------
def fun1(name,age = 17 ,sex = '男',fond='game'):
    print('我是{},我今年{},我是{}的,我喜欢{}'.format(name,age,sex,fond))
fun1('柯南')
fun1('小兰',16,'女')
# 指定知名给某个参数赋值 这个参数就叫做关键参数
# 如果参数中参数非默认值  那么调用方法的时候  一定要给他赋值
fun1(fond='学习',age = 7,name = '小王')
# *args用法----------------------------------
# 将多余的参数放入args里面
def fun1(a,b,*args):
    print('a的值是:{}'.format(a))
    print('b的值是:{}'.format(b))
    print('args的值是:{}'.format(args[0]))
    print('{} + {} ={}'.format(a,b,a+b))
# fun1(10,15)
fun1(10,15,50,554,66,47)

局部变量

#  局部变量
def fun1():
    # 在局部声明的变量即为局部变量(在方法内部声明的变量全部是局部变量
    # 局部变量的作用范围即为
    # 声明这个变量的这个方法
    # 出了这个方法的范围
    #  就不能在使用这个变量)
    result = 1+2+3+4+5+6+7+8+9
    return result   #将result值拿到方法外面使用
content = fun1()
print('1+9的结果是{}'.format(content))

# 有返回值  有参数的方法
def fun1(name , age):
    result = '我的姓名是{},我的年龄是{}'.format(name,age)
    return  result
print(fun1('张三',17))

全局变量

# 全局变量-------------------------
name = '张三'
def fun1():
    global name   #   全球的 全局的
    name = '李四'
    print(name)
fun1()

#默认参数------------------------
def fun1(name , age=17,fond = '吃鸡'):
    print('我是谁{},我的年龄{},我的爱好是{}'.format(name,age,fond))
fun1('小明',18)
fun1('小明')
# def fun1(age = 17,fond = '吃鸡',name):
#     pass
# 上面这种写法错误
#但是一定要注意  默认参数放入参数列表队尾

返回值:及它的两种作用

 返回值return------------------------
# 作用1:将方法内部结果  让外面来使用
def fun1():
    content = '我是井水,我只能在fun1这个方法里面用,外面用不到'
    #将井水运送出井
    return  content
print(fun1())

def fun1():
    print('今天走了一步')
    print('今天走了两步')
    #截断 : return后面的代码  统统不执行
    return
    print('今天走了三步')
fun1()
def isoPen(open):
    #如果灯已经开了
    if open == True:
        return
    print('打开灯')
isoPen(False)

2.2函数高级

join方法

# join()方法用于对序列的元素进行加工
# 加工的内容为使用join()方法的对象的内容
space = '--'
word = 'hello word'
print(space.join(word))

def fun1(*args,sep = ''):
    pstr = sep.join(args)
    print(pstr)
#sep
print('a','b','c',sep='~')
fun1('a','b','c',sep='!!!')

map函数

#map-------------------------------------
def my_map(string):
    allnumberlist = {
        '0':0,
        '1':1,
        '2':2,
        '3':3,
        '4':4,
        '5':5
    }
    return allnumberlist[string]
# map 接受两个参数:参数1是函数  参数2是序列
# map函数的意义就是将序列里面的每一个值都在前面的函数中进行处理,并返回一个新的列表
result = list(map(my_map,'5555'))
print(result)

def A (y):
    return y*2
# print(A())
def B (x):
    print(x*2)
B(A(5))

*args  ,*指针

def fun1(*args):
    print(args)
    #  将元祖里面的每一个元素转化成字符串放入list里面
    #? 为什么将元祖转化成列表  元祖不可变  列表可变
    args = list(map(str,args))
    print(args)
fun1(1,2,3)
def fun1(a,*args,**kwargs):
    print('a的值是{}'.format(a))
    print('args的值是{}'.format(args))
    print('kwargs的值是{}'.format(kwargs))
fun1('你好')
fun1('nice','to','meet','you')
fun1('hello',name='张三',age=18)
fun1(a = 10 , b= 10)

reduce ,它与map功能相似却又有不同

#reduce--------------------------------
from functools import  reduce
#reduce() 函数接受的参数和map()一样
# 参数1 :函数 参数2: x序列
#不同的是reduce()对序列里面的每一个元素反复调用函数
# 并返回一个结果
def my_reduce(x,y):
    return  x +y

print(reduce(my_reduce,[1,2,3,4,5,6,7,8,9,10]))

eval用法及匿名函数

result = '12/3*4/5*6/7*8'
# eval()将括号里面的内容当成代码来执行
#慎用  确保安全
content = eval(result)
print(content)

#  匿名函数----------------------------------
def fun1():
    pass
fun1()
#lambda 匿名函数 后面只能写比较简单的逻辑
result = lambda x,y :x + y
print(result(5,6))
print(result(11,12))

匿名算法排序

def fun1(x,y):
    return x + y
print(fun1(5,6))

list1 = [1,11,56,24,99,65,46]
list1 = sorted(list1,key=lambda x:x)
print(list1)

list2 = [
    {'name' : '张三',
    'age'  : 16
    },
   {
    'name': '李四',
    'age': 18
   },
   {
    'name': '王五',
    'age': 13
   }
]
list2 = sorted(list2,key= lambda x : x['age'],reverse= True)
print(list2)

list3 = [
    {
        'name' : '张三',
        'info' :{
            'age' : 14,
            'height':181
        }
    },
{
        'name' : '李四',
        'info' :{
            'age' : 19,
            'height':185
        }
    },
{
        'name' : '王五',
        'info' :{
            'age' : 15,
            'height':191
        }
    },
]

list3 = sorted(list3,key= lambda x : x ['info']['height'],reverse= True)
print(list3)

好了  今天所学大概如此   而且今天又是元气满满的一天!明天继续加油!!!!!!!!!

猜你喜欢

转载自blog.csdn.net/donquixote_/article/details/80918234
今日推荐