【Python3 笔记】Python3 入门级基础知识总结

本系列是学习 廖雪峰 Python3 教程 过程中记录的笔记,本篇文章内容主要包括 Python 的基础知识、函数、高级数据结构(List , Tuple, Dict, Set)。

Python 解释器类型

  • CPython  应用最为广泛,C语言开发,提示符是 >>>
  • IPython  交互式解释器,提示符是 In [序号]:;
  • PyPy  执行速度快,与上两种有较大的差异;
  • Jython  可将 Python 代码编译成 Java 平台所需的字节码;
  • IronPython  可将 Python 代码编译成微软 .Net 平台所需的字节码;

Python 基础

本部分主要是 Python 的一些入门的基础知识,有语言基础的看起来不费力。

输入输出

  • print(strA, strB) 中遇到逗号会自动转换为空格输出,前后两个字符串会连在一起;

  • input_str = input("str_prompt") 可以加一些输入提示语,增强交互性,输入的字符全部是 str 类型;

    input_str = input("please input your data:")
    print(type(input_str))
    

数据类型

  • 整数:任意大小,没有限制;
  • 浮点数:任意大小,没有限制,过大过小的数必须使用科学计数法来表示,0.000012 可以表示为 1.2e-5
  • 字符串:‘’ 或者 “” ,了解转义字符 \ ,\n 换行 \t 制表位(相当于 tab);
  • 布尔值:TrueFalse 两种,区分大小写,支持 and ornot 运算;
  • 空值:None 表示,一个特殊的存在;
  • 变量:大小写英文、数字和 _ 的组合,且不能使用数字开头。本身类型不固定,属于动态语言;
  • 常量:值不变,通常用全部大写的变量名来表示,例如:PI = 3.14159265359 ;

字符编码

  • ASCII  只有 127 个字符,大小写英文字母、数字和一些符号;

  • Unicode 实现所有语言的统一表示。用于内存、服务器中;

  • UTF-8Unicode 的基础上,根据字符的使用频率动态编码。用于存储和传输;

  • encode() 可以将 Unicode 编码为指定的字节;

    >>> 'ABC'.encode('ascii')
    b'ABC'
    >>> '中文'.encode('utf-8')
    b'\xe4\xb8\xad\xe6\x96\x87'
    >>> '中文'.encode('gb2312')
    b'\xd6\xd0\xce\xc4'
    
  • 格式化字符串匹配: % 或者 format();

    %d 整数 %f 浮点数 %s 字符串 %x 十六进制整数;

    format() 使用占位符 {} 来控制,在需要格式化的占位符较多时使用,会条理一些;

    >>> 'growth rate: %d %%' % 7
    'growth rate: 7 %'
    >>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
    'Hello, 小明, 成绩提升了 17.1%'
    

内置函数

  • abs(x) 返回 x 的绝对值;
  • max(list_data) 返回 list_data 中的最大值;
  • 数据类型转换:int(x) , float(x), str(x), bool(x);

高级数据结构

List

链表,有序,链式存储一系列元素,通过唯一索引来访问,元素的类型可以不一致,list 可以多层嵌套。

  • 初始化:list() 或者 [] ;

    classmates = ['Michael', 'Bob', 'Tracy']
    
  • list.append() 在末尾添加元素;

    classmates.append('Adam')
    
  • list.pop() 删除末尾的元素;

  • list.pop(index) 删除指定索引的元素;

  • list.insert(index, value) 在指定索引处插入特定的值;

    classmates.insert(1, 'Jack')
    
  • list[index] = new_value 访问、修改指定位置的值;

Tuple

链表,有序,与 List 类似,但是初始化后就不可以修改,可以嵌套,有利于代码安全。

  • 初始化:tuple() 或者 () ;

    classmates = ('Michael', 'Bob', 'Tracy')
    classmates = tuple(['Michael', 'Bob', 'Tracy'])
    
  • 不能修改指的是每个元素的指向不会修改,在多层嵌套中,嵌套内部的元素还是可以改变的。

    >>> t = ('a', 'b', ['A', 'B'])
    >>> t[2][0] = 'X'
    >>> t[2][1] = 'Y'
    >>> t
    ('a', 'b', ['X', 'Y'])
    
  • 定义空的 tuple: t = () ;

  • 定义只有一个元素的 tuple: t = (1,) ;

Dict

字典,无序,存放 key-value ,有些语言中称为 map ,将 key 按照 Hash 计算存放位置,可实现快速查找,但是内存消耗比较大,算是用空间换取时间。其中,key 不能修改,重复时会被后者覆盖 value

  • 初始化:dict() 或者 {}

    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    
  • 访问及添加:

    d['Adam'] = 67
    
  • 判断 key 是否存在—— in 或者使用 get() 方法(设定-1为不存在时的返回值):

    if 'Thomas' in d
    d.get('Thomas', -1)
    

Set

集合,无序,只存放 key , 重复的元素会被自动过滤。

  • 初始化:set() :

    s = set([1, 2, 3])
    
  • s.add(key) 添加元素;

  • s.remove(key) 删除元素;

Tips

  • 常在 .py 文件开头表明该文件类型和文件编码:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
  • pass 可作为占位符,消除程序的语法错误;

    if age >= 18:
        pass
    
  • Python 函数返回多值其实是返回一个 tuple;

  • 函数定义——默认参数,默认参数必须指向不变对象!

    def add_end(L=[]):
        L.append('END')
        return L
    
    >>> add_end()
    ['END']
    >>> add_end()
    ['END', 'END']
    

    Python 函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数 L 也是一个变量,它指向对象[],每次调用该函数,如果改变了 L 的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

  • 函数定义——可变参数,*args 是可变参数,args 接收的是一个 tuple ;

  • 函数定义——关键字参数,**kw 是关键字参数,kw 接收的是一个 dict ;

  • 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值