Allengzc
Published on 2024-12-21 / 11 Visits

python3基础

python3基础

一、关于代码#!/usr/bin/python3 的理解:

分成两种情况:

(1) 如果调用 python 脚本时,使用:

python script.py 

#!/usr/bin/python 被忽略,等同于注释。

(2) 如果调用 python 脚本时,使用:

./script.py 

#!/usr/bin/python 指定解释器的路径。

二、多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 ** 来实现多行语句,例如:

Etotal = item_one + \
        item_two + \
        item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 ****,例如:

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

三、多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之代码组。

像 if、while、def 和 class 这样的复合语句,首行以关键字开始,以冒号 (:) 结束,该行之后的一行或多行代码构成代码组。

我们将首行及后面的代码组称为一个子句 (clause)。

如下实例:

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite

四、import 与 from…import

在 python 用 import 或者 from...import 来导入相应的模块。

将整个模块 (somemodule) 导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

导入 sys 模块

import sys 
print('================Python import mode==========================') 
print ('命令行参数为:')
for i in sys.argv:
    print (i) 
print ('\n python 路径为',sys.path)

导入 sys 模块的 argv,path 成员

from sys import argv,path  #  导入特定的成员  
print('================python from import===================================') print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path

更多内容可以参考:Python import 和 from … import 的主要区别

五、Python3 解释器

有 Python、IPython、Jython、PyPy 等等

CPython 就是用 C 语言开发的,是官方标准实现,拥有良好的生态,所以应用也就最为广泛了(https://github.com/python/cpython)。

而 IPython 是在 CPython 的基础之上在交互式方面得到增强的解释器(http://ipython.org/)。

Jython 是专为 Java 平台设计的 Python 解释器(http://www.jython.org/),它把 Python 代码编译成 Java 字节码执行。

PyPy 是 Python 语言(2.7.13 和 3.5.3)的一种快速、兼容的替代实现(http://pypy.org/),以速度快著称。

六、python3 注释

单行注释

#这是一个注释
print("Cello, World")

#符号后面的所有文本都被视为注释,不会被解释器执行。

多行注释

单引号(’’’)

#usr/bin/env python3

'''
这是第一行
这是第二行
这是第三行
'''
print("Cello, World")

双引号(""")

#!/usr/bin/python3 
"""
这是多行注释(字符串),用三个双引号
这是多行注释(字符串),用三个双引号 
这是多行注释(字符串),用三个双引号
"""
print("Cello, World!")

注意:虽然多行字符串在这里被当作多行注释使用,但它实际上是一个字符串,我们只要不使用它,它不会影响程序的运行。

这些字符串在代码中可以被放置在一些位置,而不引起实际的执行,从而达到注释的效果。

嵌套多行注释会导致语法错误。

'''
这是外部的多行注释
可以包含一些描述性的内容

    '''
    这是尝试嵌套的多行注释
    会导致语法错误
    '''
'''
'''
这是外部的多行注释
可以包含一些描述性的内容

# 这是内部的单行注释
# 可以嵌套在多行注释中
'''

python3 运算符

4 + 5 = 9

其中 45 被称为操作数+ 称为运算符

Python 语言支持以下类型的运算符:

  1. Python 算术运算符

  2. Python 比较运算符

  3. Python 赋值运算符

  4. Python 逻辑运算符

  5. Python 成员运算符

  6. Python 身份运算符

  7. Python 运算符优先级

一、Python 算数运算符

运算符

描述

实例

+

加 - 两个对象相加

a + b 输出结果 31

-

减 - 得到负数或是一个数减去另一个数

a - b 输出结果 -11

*

乘 - 两个数相乘或是返回一个被重复若干次的字符串

a * b 输出结果 210

/

除 - x 除以 y

b /a 输出结果 2.1

%

取模 - 返回除法的余数

b % a 输出结果 1

**

幂 - 返回 x 的 y 次幂

a**b 为 10 的 21 次方

//

取整除 - 往小的方向取整数

9//2 得到 4 ;-9//2 得到 - 5

#!/usr/bin/env python3

a = 21
b = 10
c = 0

c = a + b
print("The sum of", a,"and", b,"is", c)

c = a - b
print ("2 - c 的值为:", c)
 
c = a * b
print ("3 - c 的值为:", c)
 
c = a / b
print ("4 - c 的值为:", c)
 
c = a % b
print ("5 - c 的值为:", c)
 
# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b 
print ("6 - c 的值为:", c)
 
a = 10
b = 5
c = a//b 
print ("7 - c 的值为:", c)

以上输出为:

1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2

二、Python 比较运算符

运算符

描述

实例

==

等于 - 比较对象是否相等

(a == b) 返回 False。

!=

不等于 - 比较两个对象是否不相等

(a != b) 返回 True。

>

大于 - 返回 x 是否大于 y

(a> b) 返回 False。

<

小于 - 返回 x 是否小于 y。所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。注意,这些变量名的大写。

(a < b) 返回 True。

>=

大于等于 - 返回 x 是否大于等于 y。

(a>= b) 返回 False。

<=

小于等于 - 返回 x 是否小于等于 y。

(a <= b) 返回 True。

三、Python 赋值运算符

运算符

描述

实例

=

简单的赋值运算符

c = a + b 将 a + b 的运算结果赋值为 c

+=

加法赋值运算符

c += a 等效于 c = c + a

-=

减法赋值运算符

c -= a 等效于 c = c - a

*=

乘法赋值运算符

c = a 等效于 c = c a

/=

除法赋值运算符

c /= a 等效于 c = c /a

%=

取模赋值运算符

c %= a 等效于 c = c % a

**=

幂赋值运算符

c **= a 等效于 c = c ** a

//=

取整除赋值运算符

c //= a 等效于 c = c //a

:=

海象运算符,这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。Python3.8 版本新增运算符

在这个示例中,赋值表达式可以避免调用 len () 两次:

数据结构

数据结构(data structure)是计算机中存储、组织数据的方式。数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合。它包含三方面的内容,逻辑关系、存储关系及操作。不同种类的数据结构适合于不同种类的应用,而部分甚至专门用于特定的作业任务。例如,计算机网络依赖于路由表运作,B 树高度适用于数据库的封装。

为什么要学习数据结构和算法?

随着应用程序变得越来越复杂和数据越来越丰富,几百万、几十亿甚至几百亿的数据就会出现,对这么大对数据进行搜索、插入或者排序等的操作就越来越慢,数据结构就是用来解决这些问题的。

常见的数据结构

  • 栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。

  • 队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。

  • 数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。

  • 链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。

  • 树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。

  • 图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。

  • 堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。

  • 散列表(Hash table):散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。

常用算法

数据结构研究的内容:就是如何按一定的逻辑结构,把数据组织起来,并选择适当的存储表示方法把逻辑结构组织好的数据存储到计算机的存储器里。算法研究的目的是为了更有效的处理数据,提高数据运算效率。数据的运算是定义在数据的逻辑结构上,但运算的具体实现要在存储结构上进行。一般有以下几种常用运算:

  • 检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。

  • 插入:往数据结构中增加新的节点。

  • 删除:把指定的结点从数据结构中去掉。

  • 更新:改变指定节点的一个或多个字段的值。

  • 排序:把节点按某种指定的顺序重新排列。例如递增或递减。

Python3 数据结构

列表

Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。

以下是 Python 中列表的方法:

方法

描述

list.append(x)

把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。

list.extend(L)

通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。

list.insert(i, x)

在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。

list.remove(x)

删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。

list.pop([i])

从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)

list.clear()

移除列表中的所有项,等于del a[:]。

list.index(x)

返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。

list.count(x)

返回 x 在列表中出现的次数。

list.sort()

对列表中的元素进行排序。

list.reverse()

倒排列表中的元素。

list.copy()

返回列表的浅复制,等于a[:]。


Comment