python3入门笔记

简介: 简介作者: “龟叔”Guido van Rossum时间: 1989年圣诞节期间开发的特点: “优雅”、“明确”、“简单”语言类型: 解释型(高级)优点:Python为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。缺点:第一个缺点就是运行速度慢,和C程序相比非常慢,毕竟是解释型语言,运行时要一行行地翻译成cpu能理解的机器码 ,而 C 时编译型的 在运行前直接编译成CPU

简介


作者: “龟叔”Guido van Rossum 时间: 1989年圣诞节期间开发的 特点: “优雅”、“明确”、“简单” 语言类型: 解释型(高级) 优点:


  1. Python为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。


  1. 完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。


缺点:


  1. 第一个缺点就是运行速度慢,和C程序相比非常慢,毕竟是解释型语言,运行时要一行行地翻译成cpu能理解的机器码 ,而 C 时编译型的 在运行前直接编译成CPU能执行的机器码,所以非常快。


  1. 代码不能加密。


使用场景: Python适合开发 网络应用,包括网站、后台服务等等如: 网络爬虫 Web应用开发 系统网络运维 科学与数字计算 图形界面开发 网络编程 自然语言处理(NLP) 人工智能 区块链 其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等; 另外就是把其他语言开发的程序再包装起来,方便使用。


安装


Python 3.8.3官网下载地址


步骤如下:


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


点击安装后等待即可,最后可以点击 去除window最大路径长度限制


网络异常,图片无法展示
|


打开命令窗口 输入python 看到一个交互界面 即表示安装成功。 在linux上通过ctrl+D可退出,windows上输入exit() 或者直接关掉命令行窗口 即可退出交互界面


网络异常,图片无法展示
|


解释器


python是解释型语言,自然需要这个解释器去执行.py文件   官网默认用 CPython解释器。 其他解释器:


  1. IPython : IPython只是在交互方式上有所增强 , CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。


  1. PyPy:它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。 PyPy和CPython的不同点


  1. Jython: 运行在Java平台上,可以直接把Python代码编译成Java字节码执行。


  1. IronPython: 运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。


小结:


Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。


基础


  1. 写法采用缩进格式


  1. 大小写敏感


  1. 注释 # 开头


当语句以冒号:结尾时,缩进的语句视为代码块。即if(){}大括号里面的代码要缩进如:


# print absolute value of an integer:
a = 100
if a >= 0:
    print(a)
else:
    print(-a)
复制代码


数据类型和变量


  • 整数


  • 浮点数(1.23x109就是1.23e9)


  • 字符串


  • 布尔值 (and、or和not运算)


  • 空值 (用None表示)


  • list和tuple


tip:


  1. 变量名必须是大小写英文、数字和_的组合,且不能用数字开头


  1. 在Python中,通常用全部大写的变量名表示常量


  1. 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。 Java是静态语言(int a = 123)


  1. /除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数: 9 / 3 3.0


  1. 还有一种除法是//,称为地板除,两个整数的除法仍然是整数:10 // 3 3


字符串


转义


转义字符用\ , r' '表示' '内部的字符串默认不转义,''' 内容 '''的格式表示多行内容


字符编码


python3 默认 utf-8 , 通过 ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符ord('A') 65  chr(65) A


字节(bytes)


字符串由字符组成,一个字符由若干个字节组成。


Python对bytes类型的数据用带b前缀的单引号或双引号表示: x = b'ABC'

从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:


b'ABC'.decode('ascii')
    # 输出结果 ABC
    a= 'hello world'
    b=a.encode()
    print(b)
    # 输出结果 b'hello world'
    print(chr(b[0]))
    # 输出结果 h
复制代码


格式化


采用的格式化方式和C语言是一致的,用%实现


>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
复制代码


len()


获取到字符串的长度,字节的长度


a= 'hello world中国'
    b=a.encode()
    print(len(a))  # 13
    print(len(b))  # 17 一个中文占三个字节 11+6
复制代码


list和tuple


list


classmates = ['Michael', 'Bob', 'Tracy']
复制代码


取最后一个元素 可以用  classmates[-1]倒数第2个  classmates[-2]


  • 添加数据 classmates.append('Adam')  ['Michael', 'Bob', 'Tracy', 'Adam']


  • 插入数据 classmates.insert(1, 'Jack') ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']


  • 删除末尾数据 classmates.pop()  ['Michael', 'Jack', 'Bob', 'Tracy']


  • 删除指定位置的元素,用pop(i)  classmates.pop(1)  ['Michael', 'Bob', 'Tracy']


  • 要把某个元素替换成别的元素,可以直接赋值给对应的索引位置: classmates[1] = 'Sarah' ['Michael', 'Sarah', 'Tracy']


  • list里面的元素的数据类型也可以不同, 如 L = ['Apple', 123, True,  ['asp', 'php']]


tuple


元组,一旦初始化就不能修改但是如果元组里有list, 是可以改变这个list里面的数值的(应该是存储了这个对象地址,不改变它就可以了。其他类型储存的是数值) 写法用括号表示如下:classmates = ('Michael', 'Bob', 'Tracy')


注意点:


空的tuple,可以写成() 如 t=()


t=(1) 表示数学公式中的小括号t=(1,) 只有1个元素的tuple定义时必须加一个逗号,来消除歧义


a=(1)
print(a[-1])  # TypeError: 'int' object is not subscriptable
t=(1,)
print(t[-1])
复制代码


条件判断


if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>
# if 简写, 只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。 (和 js的if判断条件差不多)
if x:
    print('True')
复制代码


循环


for...in循环


names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
复制代码


range()函数,可以生成一个整数序列,如 range(5)生成的序列是从0开始小于5的整数:list(range(5)) 输出结果为 [0, 1, 2, 3, 4]


while循环


计算100以内所有奇数之和


sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)
复制代码


dict


Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度


d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Michael']
#输出 95
复制代码



  1. 要避免key不存在的错误,有两种办法,一是通过in判断key是否存在'Thomas' in d 输出 False


  1. 是通过dict提供的get()方法,如果key不存在,可以返回 None,或者自己指定的value:


d.get('Thomas') #  None
d.get('Thomas', -1) #输出 自己指定的value:-1
复制代码



要删除一个key,用pop(key)方法,对应的value也会从dict中删除:


>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
复制代码



>>> d['Adam'] = 67
>>> d['Adam']
67  
复制代码



d={'aa':1,'bb':2}
d['Adam'] = 67
print(d)
d['Adam'] = 99
print(d)  
复制代码


注意:


和list比较,dict有以下几个特点: 查找和插入的速度极快,不会随着key的增加而变慢; 需要占用大量的内存,内存浪费多。


而list相反: 查找和插入的时间随着元素的增加而增加; 占用空间小,浪费内存很少。 所以,dict是用空间来换取时间的一种方法。


dict的key必须是不可变对象。如字符串、整数等,而list是可变的,就不能作为key

通过key计算位置的算法称为哈希算法(Hash)。


set


set和dict类似,也是一组key的集合,但不存储value。由于key不能重复

这个不管在es6 还是java 中 都是 无序唯一的 这些数据结构(数组,集合,键值对等等)的东西都是相通的。


例子: 要创建一个set,需要提供一个list作为输入集合:


s = set([1, 1, 2, 2, 3, 3])
s.add(4) # 添加元素
s.remove(4) # 删除元素
复制代码


set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:


>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
复制代码


set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”


s=set([1,2,[1,2,3]])  
print(s) # unhashable type: 'list'



目录
相关文章
|
5天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从零基础到实战应用
【9月更文挑战第15天】本文将引导读者从零开始学习Python编程,通过简单易懂的语言和实例,帮助初学者掌握Python的基本语法和常用库,最终实现一个简单的实战项目。文章结构清晰,分为基础知识、进阶技巧和实战应用三个部分,逐步深入,让读者在学习过程中不断积累经验,提高编程能力。
|
1天前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
4天前
|
开发框架 缓存 数据库
探索Python中的装饰器:从入门到实践
【8月更文挑战第48天】本文将引导你进入Python装饰器的奇妙世界。不同于传统的“摘要”格式,我们将通过一段代码的演变,直观展示装饰器的魅力。文章不仅介绍基础概念,还将通过实例演示如何自定义装饰器,并探讨其在实际应用中的强大用途。让我们开始吧,一起深入理解这个改变函数行为的强大工具!
|
2天前
|
人工智能 数据挖掘 开发者
Python编程入门:从基础到实战
【9月更文挑战第18天】本文将带你走进Python的世界,从最基本的语法开始,逐步深入到实际的项目应用。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到你需要的内容。我们将通过详细的代码示例和清晰的解释,让你轻松掌握Python编程。
15 5
|
3天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
4天前
|
存储 机器学习/深度学习 数据挖掘
深入浅出:Python编程入门与实践
【9月更文挑战第16天】本文以“深入浅出”的方式,引领读者步入Python编程的世界。从基础语法到实际应用,我们将一步步探索Python的魅力所在。无论你是编程新手,还是希望拓展技能的老手,这篇文章都将为你提供有价值的信息和指导。通过本文的学习,你将能够编写出简单而实用的Python程序,为进一步深入学习打下坚实的基础。让我们一起开始这段编程之旅吧!
|
4天前
|
机器学习/深度学习 数据挖掘 程序员
Python编程基础:从入门到实践
【9月更文挑战第16天】本文是一篇Python编程的入门教程,旨在帮助初学者理解Python的基本概念和语法。文章首先介绍了Python的历史和特点,然后详细讲解了Python的基本语法,包括变量、数据类型、运算符、控制结构等。接着,文章通过一些实例代码,展示了如何使用Python进行基本的编程操作,如输入输出、条件判断、循环等。最后,文章还提供了一些学习资源和建议,帮助读者进一步学习和掌握Python编程。
|
5天前
|
存储 程序员 开发者
Python 编程入门:从零基础到编写实用脚本
【9月更文挑战第15天】本文是一篇面向初学者的Python编程入门指南,通过浅显易懂的语言和实际的代码示例,引导读者逐步掌握Python的基本概念、语法规则以及如何运用Python解决实际问题。文章不仅介绍了Python的基础知识点,还通过实例演示了如何将这些知识应用于日常编程任务中,帮助读者快速上手并能够独立编写简单的Python脚本。
|
3天前
|
机器学习/深度学习 数据采集 存储
Python编程入门:从基础到实战
【9月更文挑战第17天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实战项目。我们将一起探索Python的强大功能和灵活性,以及如何利用它解决实际问题。无论你是编程新手,还是有一定经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的学习之旅吧!
|
4天前
|
存储 程序员 Python
Python编程入门:从零到英雄
【9月更文挑战第16天】本文是一篇针对初学者的Python编程入门指南,旨在帮助读者从零基础开始,通过简单易懂的语言和实例,逐步掌握Python编程的基本知识和技能。文章首先介绍了Python的起源和特点,然后详细讲解了Python的安装、基本语法、数据类型、控制结构、函数、模块等基础知识,最后通过一个简单的项目实例,展示了如何运用所学知识解决实际问题。全文通俗易懂,结构清晰,适合所有对Python感兴趣的读者阅读和学习。