分类目录归档:Python

装饰器


1.闭包函数

闭包函数一般用于==解决某一个函数只能传入一个参数==的情况。

def funOut(num1):
    def funIn(num2):
        #内部函数修改外部函数的变量,需要声明 nonlocal(变量非内部的,也就是外部的意思)
        nonlocal num1
        num1 += 100
        print(f'此时num1的值为:{num1},需要相加的num2的值为:{num2}')
        return num2+num1
    return funIn

f = funOut(100)
#调用以

查看全文

迭代器与生成器


迭代器

定义

  1. 当类中定义了__iter__和__next__两个方法
  2. __iter__方法需要返回对象本身,即:self
  3. __next__方法,返回下一个数据,如果没有数据了,则需要抛出一个StopIteration的异常。

迭代器类型

#创建迭代器类型
class It():
    def __init__(self):
        self.counter = 0
    def __iter__(self):
        return self
    def __next__(self):
        self.counter += 1
        if self

查看全文

面向对象


对象的复制

变量的赋值操作:只是形成两个变量,实际还是指向同一个对象

class A:
    pass

a1 = A()
a2 = A()
a3 = a1

#可以通过id来判断,对象是否一致
print('a1对象',a1)
print('a2对象',a2)
print('a3对象',a3)

print('a1和a2对象是否相等',id(a1)==id(a2)) # a1和a2对象是否相等 False
#变量的赋值操作:只是形成两个变量,实际还是指向同一个对象。
print('a1和a3对象是否相等',id

查看全文

高阶函数


函数的参数也是一个函数,就称为高阶函数

1.map

1.概述

map(func,*Iterable)

'''
参数1是一个函数,参数2是一个可迭代的对象,例如列表
将参数2里面的每一个元素作为参数传入到参数1这个方法中
最后返回一个新的列表

注意:*参数2是个不可数的,可以传递多个列表。那么此时对应的参数1函数的参数也一一对应
'''

2.实例

单个Iterable(可迭代对象)
a = [1,2,3,4,5,6,7,8,9]
# 将列表中每个元素转为字符串
m = map(str,a)
print(list(m)) # ['1&#

查看全文

匿名函数lambda


1.语法格式

lambda arg1,arg2,arg3 : <表达式>
def add(a,b=1):
    return a+b
print(add(10,20)) # 30
print(add(10)) # 11

add_lambda = lambda a,b=1:a+b
print(add_lambda(10,20)) # 30
print(add_lambda(10)) # 11

2.含有判断

get_odd_even = lambda x:'偶数' if x % 2 == 0 else '奇数'

print('8 是

查看全文

yield


1.基本使用

函数中,只要有yield,那么返回就是一个yield_obj生成器(==generator==)对象,不会执行函数内部的代码

yield_obj.__next__() == next(yield_obj) 这两个一样的
首次通过yield_obj.__next__()方法会执行yield以上的代码,遇到yield然后返回,
再次执行yield_obj.__next__()方法会执行yield以下的代码,与yield以上的代码,遇到yield然后返回,
再次执行yield_obj.__next__()方法会执行yield以下的代码,与yield以上的代码,遇到yield然后返回,

查看全文

列表推导式


结构:==[变量 for 变量 in 可迭代对象]==

1.简单模式

只包含循环,不包含判断筛选

#常规
list_1 = []
for x in range(1,10):
    list_1.append(x)
print(list_1)

#推导式
list_2 = [x for x in range(1,10)]
print(list_2)

2.一般模式

包含判断和筛选

#常规
list_3=[]
for x in range(1,10):
    if x % 2 ==0:
        list_3.append(x*x)
print(list_3)

#推导式
list_4

查看全文

异常处理


1.语法格式

a = input("请输入被除数")
b = input("请输入除数")
try:
    a=int(a)
    b=int(b)

    c = a/b
    print("商为:{0}".format(c))
except ValueError:#按顺序执行,这个异常不对就判断下一个,如果对了,就不再判断
    print("数据类型有错误")
except ZeroDivisionError:
    print("除数不能是0")
except Excepti

查看全文