美文网首页
python 文档

python 文档

作者: 守住这块热土 | 来源:发表于2020-02-28 23:18 被阅读0次

    一. 准备知识

    1. python 安装

    安装完成后,在cmd 中输入

    • python ,查看版本;
    • exit() :退出

    2. 开发工具 --- pycharm

    • 控制台运行程序 <Terminal>:

    (venv) C:\develop\python_3_8_2\Code\test>python Chapter_1\hello.py

    3. python 程序是如何运行的?

    源代码 ----》 解释器 ---》 010101(机器码)
    .pyc 文件 CPython / JPython /PYPY 三种

    二. 变量

    1. 注释

    • 单行 : #
    • 多行 : """ / '''

    2. 变量

    变量 : 内存的别名

    3. 变量类型

    • 变量类型 : type()
    • isinstance() : 来判断一个对象是否是一个已知的类型,类似 type()。

    isinstance() 与 type() 区别:

    • type() 不会认为子类是一种父类类型,不考虑继承关系。
    • isinstance() 会认为子类是一种父类类型,考虑继承关系。
    • 如果要判断两个类型是否相同推荐使用 isinstance()。

    4. 关键字

    >>> import keyword
    >>> keyword.kwlist
    ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    >>> 
    

    5. 输入

    input()

    6. 输出

    print(*objects, sep='', end='\n', file=sys.stdout, flush=False)
    - objects , 输出的对象;
    - sep, 分隔符(默认为空字符串);
    - end, 结束符(默认为换行符,默认换一行);
    - file, 输出流;
    - flush, 是否强制刷新输出流(默认情况下不会轻质输出);
    
    #file
    file_source = open('zen.txt', 'a+', encoding='utf-8')
    print('人生苦短,我用python', file=file_source)
    file_source.close()
    

    7. 运算符

    **  幂 - 返回x的y次幂 
    //  取整除 - 返回商的整数部分(向下取整)
    a%b  --->  r=a-b*(a//b)
    
    # 交换两个数
    a, b = 5, 10
    a, b = b, a
    print(a, b)
    
    逻辑运算符

    and / or / nor

    运算符 逻辑表达式 描述实例
    and x and y 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
    or x or y 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
    not not x 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

    三. 流程控制

    1. if

    2. if-elif-else

    3. 三元运算符

    x = -1
    y = x if x >= 0 else -x
    print(y)
    

    4. 省略表达式

    5. while() 循环

    6. for() 循环

    range() : range (start, stop [, step])

    • start
    • stop
    • step : 步长
      range(5) ===> range(0, 5) : [ 0, 5)

    7. 循环跳出语句 break

    8. 循环跳出语句continue : 跳出本次循环

    9. 循环else子句

    • while -else
    • for - else
      else 子句, 循环正常离开时,执行的语句

    for else语句可以总结成以下话。
    如果我依次做完了所有的事情(for正常结束),我就去做其他事(执行else),若做到一半就停下来不做了(中途遇到break),我就不去做其他事了(不执行else)。

    • 英文原文
      A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there is no next item.

    • 中文译文
      用 break 关键字终止当前循环就不会执行当前的 else 语句,而使用 continue 关键字快速进入下一论循环,或者没有使用其他关键字,循环的正常结束后,就会触发 else 语句。
      与continue 语句没有关系

    str = "hello world"
    for item in str:
        if item == "l":
            break
        print(item)
    else:
        print("打印完成")
    

    四. 字符串

    1. 字符串基础

    单引号 / 双引号 / 三个单引号或三个双引号。

    2. 索引

    3. 切片

    motto = "abcd,efg"
    motto[0:2]
    motto[1:]
    motto[0:10:2]
    motto[-5:-1] # 从小到大

    • 切片区间从小到大
    • 切片区间左开右闭
    • 索引越界会报错
    • 切片越界会自动处理

    4. 字符串是不可变类型

    • mutable 可变类型
    • immmutable 不可变类型

    5. 字符串常用方法 --- 内置方法

    • dir() 函数
      不带参数时,返回当前范围内的变量、方法和定义的类型列表。

    6. 字符串拼接方法 --- join() 函数

    sep.join(iterable)
    以 sep 作为分隔符,将 iterable 中所有的元素 合并为一个新的字符串。 iteratable 可以是一个数组 / 元组等

    list_var = ['www', 'baidu', 'com']
    str_var = '.'.join(list_var )

    7. 大小写转换

    • upper()
    • lower()
    • title() :所有单词都已大写开始,其余均为小写;
    • capitalize : 将字符串的第一个字符串转换为大写; ( 把…首字母大写)
    • swapcase : 大写的字母转换为小写, 小写转为大写。

    8. 5种字符串的检索方法

    • count() : 统计字符串里指定字符出现的次数; 区分大小写。

    • find() :
      查找某字符串里是否 包含 被查询的子字符串
      如果找到,返回子串的索引,否则返回-1

    • index() : 没有找到时,抛出异常。

    • startwith() : 查寻 字符串是否是以 指定子字符串开头 。 找到了返回True,否则返回False

    • endwith()

    9. 3种字符串的修剪方法: strip / lstrip/ rstrip

    • strip() : 移除字符串头尾的字符(默认为空格 或 换行符),不移除中间的字符串。
    • lstrip()
    • rstrip()

    10. 字符串格式化

    str = "the length of (%s) is %d" %('runoob',len('runoob'))
    print(str)
    
    • % --- formatting : 用元组替换。
    • str.format() : 通过{} 和 : 来替换以前的%。 可以接受不限个参数,位置可以不按顺序。
    • f-sring : f或F修饰符引领的字符串(f'xxx 或 F'xxx), 以大括号{}标明被替换的字段
    #你好Allen,这是你登录的第3次, 本次消费99.5员
    str = '你好{0},这是你登录的第{1}次, 本次消费{2:.1f}员'.format('Allen', 3, 99.47)
    print(str)
    str1 = '你好{name},这是你登录的第{time}次, 本次消费{count:.1f}元'.format(name=name, time=logInTime, count=count)
    str2 = F'你好{name},这是你登录的第{logInTime}次, 本次消费{count:.1f}元'
    

    5.14 f-sring

    • 表发生求值 与 函数调用
    • 引号 / 大括号 和 反斜杠 : 大括号内,不能使用转移符号 / 外边可以

    5.15 f-string 自定义格式 : 对齐 / 宽度 / 符号 / 补零 / 精度 / 进制等

    • 对齐 : < 左对齐 / > 右对齐 / ^ 居中
    s = 3.1415926
    num = f'{s:<13}' # 占13位,左对齐
    print(num)  '3.1415926    '
    
    • 数字符号相关格式 : + :负数前 加(-),正数前加(+);(空格),负数前加(-),正数前加(空格); - ,负数前 加(-),正数前不加任何符号。

    • 数字显示(进制)

          #0b  #0o
    print(f'{123:#0x}')  #0x7b
    
    • 宽度与精度 :
      width : 整数 width指定快读
      0width : 开头的0,指定高位用0补足宽度
      width.precision : precision 显示精度
    a=123.456
    print(f'{a:8.2f}')   #'  123.46'
    print(f'{a:08.2f}')  #'00123.46'
    
    s="hello"
    print(f'{s:8.3s}')  #'hel     '   长度是8位,我只取3位。
    
    • 千分位分隔符 : , 或 _
      其中 10进制,每 3个数分隔;
      其余进制数,每4个数分隔;
    b=1234567890.1234567
    print(f'{b:_f}')
    
    • 格式类型相关描述符
      %Y %M %D

    五. python list / tuple /dict / set

    1. list

    • append : 末尾追加;
    • insert : 指定位置插入;
    list_a = ['aa', 'bb', 'cc']
    list_a.insert(2, 'ff')
    print(list_a)   # ['aa', 'bb', 'ff', 'cc']
    
    • pop() : 默认删除末尾元素, pop(1) 删除指定位置元素

    2. tuple 元组

    • 不可更改 : 赋值时,决定了所有的元素
    # 声明
    tuple_b = ('aa', 'bb', 'cc')
    
    • len(list_b)

    3. dict 字典 : 键值对, map

    • 查找速度快;
    • 利用空间换时间。
    dict_b ={'s':"Allen", 2:"bob", 3:"lucy"}
    print(dict_b['s'])       #Allen
    print(2 in dict_b)       #True
    print(dict_b.get('s'))   #Allen
    print(dict_b.items())    #dict_items([('s', 'Allen'), (2, 'bob'), (3, 'lucy')])
    
    • dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值.

    4. set

    • 集合(set)是一个无序的不重复元素序列。 可视作:没有value的字典
    • 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
    • 一般用作去重或集合求并求交。
    #创建格式:
    parame = {value01,value02,...}
    #或者
    set(value)
    
    • 集合 求交 &, 并集 |
    • 增加元素add
    • 删除 remove
    • 当集合是由列表和元组组成时,set.pop()是从左边删除元素。(集合 对list 或者tuple 升序)

    六. 函数

    1. 基本用法

    def functionname( parameters ):
       "函数_文档字符串"
       function_suite
       return [expression]
    ---
    def printme( str ):
       "打印传入的字符串到标准显示设备上"
       print str
       return
    ---
    #默认参数
    def printme( str="hello" ):
    ---
    #不定长参数
    def print_args(s, *args):
        print(s,end='  ')
        for a in args:
            print(a, end='  ')
        return
    
    # print_args('hello')
    print_args('aaaa', 'a', 1 ,'b')  # aaaa  a  1  b  
    ---
    # 参数次序可以变
    def print_two(a, b):
        print(a,b)
    
    print_two(b='bb', a='aa')   # aa bb
    

    2. 内嵌和闭包

    • 内嵌函数:函数里又嵌套一个函数
    def fun1():   
        print('fun1()在被调用')   
        def fun2():       
            print('fun2()在被调用')
        fun2()
    
    • 闭包:闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包.
      闭包是概念,不是某种函数类型,和递归的概念类似,就是种特殊的函数调用;
      闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁。

    • global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量

    • nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。

    3. lamba表达式 : 匿名表达式

    # 可写函数说明
    sum = lambda arg1, arg2: arg1 + arg2
     
    # 调用sum函数
    print "相加后的值为 : ", sum( 10, 20 )
    print "相加后的值为 : ", sum( 20, 20 )
    

    七. 模块

    1. import

    在同一文件下的文件,可以直接import;

    # hello.py
    def print_hello():
        print("hello")
        return
    
    #main.py
    import hello
    hello.print_hello()
    

    2. from...import

    这个声明不会把整个 fib 模块导入到当前的命名空间中,它只会将 fib 里的 fibonacci 单个引入到执行这个声明的模块的全局符号表。

    # hello.py
    def print_hello():
        print("hello")
        return
    
    #main.py
    from hello import  print_hello
    print_hello()
    

    3. 不在一个路径下

    import sys
    sys.path.append
    
    import sys
    sys.path.append('C:\\develop\\python_3_8_2\\Code\\test\\Chapter_1\\hello')
    from hello import print_hello
    print_hello()
    

    4. 包 : 一个目录及子目录组成一个包(可以看作一个库)。

     if __name__ == '__main__'
    
    1. 新建一个文件夹;
    2. 文件夹下,新建一个 init.py文件。可以为空。
    import sys
    sys.path.append('C:\\develop\\python_3_8_2\\Code\\test\\Chapter_1\\hello\\package_test')
    
    import package_test.hello as hl
    hl.print_hello()
    

    5. 标准库


    八. 类

    1. 类基本定义

    # 类定义
    class Human(object):
        pass
    
    # 类属性 : 这个属性和类绑定, 并不是和实例绑定
    class Human(object):
        taisheng = True # 胎生
    
    # 实例属性 : 这个name是和实例绑定的
    class Human(object):
        def __init__(self, name): # 构造函数
            self.name = name
    
    human_a = Human("Allen")
    
    
    # 类方法
    class Human(object):
        def __init__(self, name): # 构造函数
            self.name = name
        def walk(self):
            print(self.name + " is walking")
    
    human_a = Human("Allen")
    human_a.walk() # Allen is walking
    
    • 访问控制 : 如果不想外部直接访问,则在属性前面加__name(_name protected)。这样外部就无法访问,如果还想访问,则get方法。

    2. 继承

    3. 方法继承

    class Parent:        # 定义父类
       def myMethod(self):
          print ('调用父类方法')
     
    class Child(Parent): # 定义子类
       def myMethod(self):
          print ('调用子类方法')
     
    c = Child()          # 子类实例
    c.myMethod()         # 子类调用重写方法
    super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法
    

    九. python 文件读写

    open(file, mode='r')
    [file.readline([size])]  # 读取整行,包括 "\n" 字符, 字节数;
    
    # 写
    f = open("zen.txt", 'a+')
    content = f.read()
    f.write('hhh')
    f.close()
    
    f = open("zen.txt", 'a+')
    content = f.read()
    f.writelines(['hhh', 'lll'])
    f.close()
    

    十. python 异常

    1. try ... except

    try:
        f = open("111qwqw111.txt", 'r')
    except OSError:
        print('文件出错T_T')
    
    
    try:
        f = open("111qwqw111.txt", 'r')
    except OSError as err:
        print('错误的原因是:' + str(err)) #错误的原因是:[Errno 2] No such file or directory: '111qwqw111.txt'
    

    2. try - finally

    finally : 无论如何都会被执行的代码。

    try:
        正常的操作
       ......................
    except:
        发生异常,执行这块代码
       ......................
    else:
        如果没有异常执行这块代码
    

    3. raise 语句 : 引发一个异常

    raise AAAA("除数为零的异常")
    raise NameError("qq", 1111)
    

    十一. 迭代器 和 生成器

    1. 迭代器

    for each in list
    
    • iter()

    • next()

    • _iter_() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 _next_() 方法并通过 StopIteration 异常标识迭代的完成。

    • _next_() 方法会返回下一个迭代器对象。

    it = iter("hello")
    print(next(it))
    
    class MyNumbers:
      def __iter__(self):
        self.a = 1
        return self
     
      def __next__(self):
        x = self.a
        self.a += 1
        return x
     
    myclass = MyNumbers()
    myiter = iter(myclass)
     
    print(next(myiter)) #1
    print(next(myiter)) #2
    print(next(myiter)) #3
    print(next(myiter)) #4
    print(next(myiter)) #5
    

    2. 生成器 yield

    中断

    def myGen():
        print("生成器被执行")
        yield 1
        yield 2
    
    myG = myGen()
    print(next(myG)) # 1
    print(next(myG)) # 2
    

    十二. 图形用户界面: EasyGui

    • 安装完之后, 安装文件在 : C:\develop\python_3_8_2\Lib\site-packages\easygui.py
    # 参考文档 https://blog.csdn.net/qiaoermeng/article/details/99718378
    #from easygui import *
    import easygui as g
    import sys
    
    while 1:
        g.msgbox("嗨,欢迎进入第一个界面小游戏^_^")
    
        msg = "请问你希望在鱼C工作室学习到什么知识呢?"
        title = "小游戏互动"
        choices = ["谈恋爱", "编程", "OOXX", "琴棋书画"]
    
        choice = g.choicebox(msg, title, choices)
    
        # note that we convert choice to string, in case
        # the user cancelled the choice, and we got None.
        g.msgbox("你的选择是: " + str(choice), "结果")
    
        msg = "你希望重新开始小游戏吗?"
        title = "请选择"
    
        if g.ccbox(msg, title):  # show a Continue/Cancel dialog
            pass  # user chose Continue
        else:
            sys.exit(0)  # user chose Cancel
    

    相关文章

      网友评论

          本文标题:python 文档

          本文链接:https://www.haomeiwen.com/subject/kmvdhhtx.html