Python零基础教程(二):有编程基础者的Python速成指南(30分钟掌握)

目录

  • 1.函数
  • 1.1 abs()函数:
  • 1.2 max()和min()函数:
  • 1.3 数据类型转换函数
  • 1.4 hex()函数
  • 1.5 def自定义函数
  • 1.6 空函数
  • 1.7 isinstance()函数
  • 1.8 递归函数
  • 2.高级特性
  • 2.1 切片
  • 2.2 迭代
  • 2.3 列表生成式
  • 2.4 生成器
  • 2.5 迭代器
  • 1.函数

    包含:调用函数、定义函数、函数的参数、递归函数

    输出结果都写在了注释中

    1.1 abs()函数:

    # 求绝对值
    print(abs(-12.34))
    # 12.34
    

    1.2 max()和min()函数:

    # 求最大最小值
    print(max(1,5,2,-3),min(1,5,2,-3))
    # 5 -3
    

    1.3 数据类型转换函数

    # 数据类型转换函数:int(),float(),str(),bool()
    print(int(12.34))
    # 12
    print(float(12))
    # 12.0
    print(str(1.234))
    # 1.234
    print(bool(12),bool(0),bool('0'))   # '0'表示字符
    # True False True
    

    1.4 hex()函数

    # hex()函数:
    # 把一个整数转换成十六进制表示的字符串
    print(hex(10),hex(15),hex(17))
    # 0xa 0xf 0x11
    

    1.5 def自定义函数

    # def自定义函数
    def my_abs(x):
        if x > 0:
            return x
        else:
            return -x
    
    print(my_abs(-100))
    # 100
    

    1.6 空函数

    # 空函数
    # pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来
    def nop():
        pass
    

    1.7 isinstance()函数

    # isinstance()函数:
    # 数据类型检查
    def my_abs(x):
        if not isinstance(x,(int,float)):	# 检查x是否是int或float类型
            raise TypeError('bad operand type')
        if x > 0:
            return x
        else:
            return -x   
    

    1.8 递归函数

    # 递归函数
    def fact(n):
        if n == 1:
            return n
        return n * fact(n-1)
    print(fact(5))
    # 120
    
    参数类型 定义 语法示例 调用方式 传值方式 典型应用场景
    必选参数 调用时必须传入的参数,无默认值 def func(a, b): 按位置或关键字传递 必须显式传值,否则报错 函数必须依赖的基础参数
    默认参数 定义时赋予默认值,调用时可省略 def func(a, b=1): 按位置或关键字传递;可省略有默认值的参数 未传值时使用默认值 可选参数或常用配置
    可变参数 接收任意数量的位置参数,打包为元组 def func(*args): 按位置传递多个参数,如 func(1, 2, 3) 自动将多个位置参数合并为元组 args 处理不定长位置参数(如求和、拼接)
    命名关键字参数 强制要求参数以关键字形式传递(需用 * 分隔或跟在可变参数后) def func(a, *, b)def func(a, *args, b): 必须使用关键字传值,如 func(a=1, b=2)func(1, 2, 3, b=4) 直接通过参数名赋值 明确参数含义,避免歧义
    关键字参数 接收任意数量的关键字参数,打包为字典 def func(**kwargs): 按关键字传递多个参数,如 func(a=1, b=2) 自动将多个关键字参数合并为字典 kwargs 接受灵活配置或扩展参数

    2.高级特性

    包含:切片、迭代、列表生成式、生成器、迭代器

    输出结果都写在了注释中

    2.1 切片

    # 切片Slice,对tuple同理
    l = list(range(100))
    print(l[0:10])
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(l[:5])
    # [0, 1, 2, 3, 4]
    print(l[-10:])
    # [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    print(l[10:20])
    # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
    print(l[:10:2]) # 每两个取一个
    # [0, 2, 4, 6, 8]
    print(l[::5])
    # [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
    

    2.2 迭代

    # 迭代
    d = {'a':1,'b':2,'c':3}
    for key in d:
        print(key)
    # a
    # b
    # c
    
    for value in d.values():
        print(value)
    # 1
    # 2
    # 3
    
    for k,v in d.items():
        print(k,v)
    # a 1
    # b 2
    # c 3
    
    for ch in 'ABC':
        print(ch)
    # A
    # B
    # C
    
    # 通过collections.abc模块的Iterable类型判断一个对象是否是可迭代对象
    from collections.abc import Iterable
    print(isinstance ('abc',Iterable)) # str是否可迭代
    print(isinstance([1,2,3], Iterable)) # list是否可迭代
    print(isinstance(123, Iterable)) # 整数是否可迭代
    # True
    # True
    # False
    
    # enumerate()函数:
    # 同时迭代索引和元素本身
    for i,value in enumerate(['A','B','C']):
        print(i,value)
    # 0 A
    # 1 B
    # 2 C
    
    for x,y in [(1,1),(5,3),(2,9)]:
        print(x,y)
    # 1 1
    # 5 3
    # 2 9
    

    2.3 列表生成式

    # 列表生成式
    l = [x*x for x in range(1,11)]
    print(l)
    # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    l2 = [m + n for m in ['A','B','C'] for n in ['1','2','3']]
    print(l2)
    # ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
    
    # lower()和upper()函数:
    # 转化为小写和大写
    l = ['Hello', 'World', 'IBM', 'Apple']
    l3 = [l3.lower() for l3 in l]
    print(l3)
    # ['hello', 'world', 'ibm', 'apple']
    
    #if-else
    # 在一个列表生成式中,for前面的if ... else是表达式,必须根据x计算出一个结果;
    # 而for后面的if是过滤条件,不能带else
    l4 = [x for x in range(1,11) if x%2 == 0]
    print(l4)
    # [2, 4, 6, 8, 10]
    
    l5 = [x if x%2 == 0 else -x for x in range(1,11)]
    print(l5)
    # [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
    

    2.4 生成器

    # 生成器generator
    # 创建方法一:把一个列表生成式的[]改成()
    g = (x * x for x in range(1,11))   
    print(g)
    # <generator object <genexpr> at 0x000001D8DB242190>
    
    # next()函数:
    # 获得generator的下一个返回值
    print(next(g))
    print(next(g))
    print(next(g))
    # 1
    # 4
    # 9
    
    # for循环遍历输出
    for i in g:
        print(i)
    # 1
    # 4
    # 9
    # 16
    # 25
    # 36
    # 49
    # 64
    # 81
    # 100
    
    # 创建方法二:创建包含yield关键字的函数
    def fib(n):
        i,a,b = 0,0,1
        while i < n:
            yield b
            a,b = b,a+b
            i += 1
        return 'done'
    print(fib(6))
    # <generator object fib at 0x000001C86131BE60>
    
    for i in fib(6):
        print(i)
    # 1
    # 1
    # 2
    # 3
    # 5
    # 8
    
    # 如果想要拿到返回值'done',必须捕获StopIteration错误,返回值包含在StopIteration的value中
    g = fib(6)
    while True:
        try:
            x = next(g)
            print('g:', x)
        except StopIteration as e:
            print('Generator return value:', e.value)
            break
    

    2.5 迭代器

    凡是可作用于for循环的对象都是Iterable类型;

    凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

    集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

    Python的for循环本质上就是通过不断调用next()函数实现的

    廖雪峰的Python学习网站

    作者:路人蛃

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python零基础教程(二):有编程基础者的Python速成指南(30分钟掌握)

    发表回复