运维初学PythonDay07

异常

try:
xxx、
except xxx:
else:
没有捕获到异常就执行我
print(xxxx)

如果不出现错误则执行else 子句

finally子句无论异常是否发生都会执行

触发异常raise

函数

创建函数def 函数名 参数

调用

函数的使用需要顺序先声明 不允许没有声明就提前调用

  • 定义函数时,函数的先后顺序不重要,重要的是 函数在什么位置被调用

调用关键字传参 函数名(形式参数名=值)

使用一对圆括号() 调用函数,如果没有圆括号,只是对函数的引用

def get_info(a,b=111):
    print(f"a:{a},b:{b}")
if __name__ == '__main__':
    get_info(1)
    get_info(b=123123,a=66666)#关键字传参

如果混用 位置传参放在关键字传参的前面

print("1230,"56677",sep='----') #键字传参 放在了位置的后面

弄反了报错如下SyntaxError: positional argument follows keyword argument

算术小游戏

import random
def exam():
    nums=[random.randint(1,100) for i in range(2)]
    nums.sort(reverse=True)
    fuhao=random.choice(["+","-"])
    if fuhao=="+": #data正确答案
        data=nums[1]+nums[0]
    else: #"-"
        data=nums[0]-nums[1]
    suan=int(input(f"第一个数{nums[0]}{fuhao}第二个数{nums[1]}=???____:"))
    if suan == data:
        print("bingo~~")
    else:
        print(f"你算错了正确答案是{data}")
if __name__ == '__main__':
    exam()

匿名函数

不需要以标准的def声明而是用一个完整的lambda语句 代表了一个表达式

没有名字 直接写形式参数 :直接写算法 lambda x,y:x+y lambda 函数的定义 声明必须放在同一行

def fun01(num):
    return True if num % 2 == 1 else False
fun02 = lambda num: True if num % 2 == 1 else False
if __name__ == '__main__':
    print(fun01(100),fun02(101))

函数式编程 : 将一个函数作为另一个函数的参数 filter(布尔函数,列表)

将列表中的元素遍历一次传入布尔函数中

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

  • 如果布尔函数比较简单,直接使用 lambda 匿名函数就显得非常方便了

data=filter(lambda x:x%2,[num for num in range(10)])
print(list(data))#过滤出10以内的奇数

map

进几个元素出几个并不会进行过滤 返回一个新的列表

map(加工函数,列表)将每个数据交给加工函数去除处理 并返回处理的结果

  • map(func,seq): 调用一个函数func 来迭代遍历每个序列中的元素;返回一个经过func处理过的元素序列

map(func, seq)函数的使用,将seq序列中的元素,传入函数func后,经过处理后全部保留下来

data=map(lambda x:x*2+1,[num for num in range(10)])
print(list(data))

变量的作用域

全局变量

函数外部定义的变量

作用域函数内外都可以使用

局部变量

作用于函数内部的变量

就近原则 局部--全局---内建模块---报错

global

函数内部使用并修该全局变量的值

全局的 global 如果在函数内部使用的是global声明变量就可以修改全局变量的值()

生成器

延迟操作 需要的时候才产生结果 而不是立即产生结果 这是生成器的主要好处

生成器表达式

gen.__next__() 生成器中的元素只能获取一遍 放入内存中 用一个扔一个 用来处理大批量数据

sum((i for i in range(1,59999999)))

生成器函数(yield)

return 函数执行的终止

yield 函数执行的暂停

def fun01():
    a=10
    yield a#return 表示函数执行的终止
    b="hello"
    yield b
    c=[1,2,3]
    yield c
if __name__ == '__main__':
    gen=fun01()
    print(gen.__next__())
    print(gen.__next__())
    print(gen.__next__())
#值让取完了就会抛出异常Stoplteration

你需要知道

以下函数定义是否正确?为什么?

  1. def myfunc(age=22, name):

  1. pass

不正确 因为默认放在后面

2 请将以下函数改为匿名函数。

  1. def add(x, y):

  1. return x + y

  1. add=lambda x,y:x+y

3 请通过map()函数简化以下代码。

  1. time_str ='2019-12-1'

  1. time_str = time_str.split('-')

  1. year =int(time_str[0])

  1. month =int(time_str[1])

  1. date =int(time_str[2])

year,month,date=map(int,time_str.split('-'))

4 分析以下代码。请问变量x的值是什么?为什么?

  1. x =10

  1. def change_x():

  1. global x

  1. x ='hello'

  1. print(x)

10 因为函数就没有调用

5 Python的模块命名有哪些约定?

  • 首字符可以是字母或下划线

  • 后续字符可以是字母、数字或下划线

  • 区分大小写

6 python文件和模块的关系是什么?

文件是物理上组织代码的形式 模块是逻辑上组织代码的形式

文件扩展名.py移除就是模块名

7 在导入模块时,python到哪些路径查找模块文件。

sys.path所定义的路径

PYTHONPATH环境变量所定义的路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

small white poplar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值