最近在开始学习python,以下分享一下python的基础知识,包括软件下载,python的基础语法知识,以及第三方库的引用等基础知识。
- Python快速入门
- 认识python
诞生于1991年,足足有28年
2008年新出炉python3.0
python2.x
python3.x
python之父
python改进方案 PEPs.
python的改进由PEP流程收集社区意见,将来打算加入的新特性提出文档提案,由社区和Guido审阅评估,决定是否成为正式的PEP 文档,PEP是对python改进遵守的标准
PEP8就是程序代码风格 PEP20 python哲学
经验丰富的程序员倡导尽可能避繁就简。
import this
python蟒蛇取自吉多喜欢的电视剧里面的名字
-
- 为什么用python
Python是一种计算机通用的程序设计语言。现在有多种流行的编程语言,比如控制硬件的C语言,web后台开发的Java语言,网页编程的JavaScript语言等等。但是Python和人工智能及数据科学联系在了一起是因为提供了人工智能及数据科学家所需的所有必要功能,并能够与诸如Hadoop和Spark等工具很好地融合在一起。
让我们看看它是如何做到这点的。
学人工智能数据科学要用到python,这里只是强调了python库的丰富性。开发人员一直在使用python数据包来提供更多的功能,这使python成为一个不错的选择。
-
- python的实现
CPython是python的官方参考实现,一般安装python没特别声明,多半是安装CPython,顾名思义用c语言编写的软件产品.
python是解释型语言,不过并非每次都从源码直接解释后再执行,CPython会将源码解释为字节码,然后由虚拟机执行,也就是之后再次执行同一个程序,如果源码文件被检测到没有更改,就不会再对源码重头进行语法和语义解析等操作,而是从字节码开始直接解释,以加快解释执行速度.
其他还有 PyPy、Jython等等其他软件产品
-
- 下载并安装Anaconda
- 安装python(略过)
- 下载并安装Anaconda
Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。
由于3.x版越来越普及,我们以最新的Python 3.x版本为基础。
在Python中,安装第三方模块库,是通过包管理工具pip完成的
-
-
- 安装Anaconda
-
Anaconda是一个基于Python的数据处理和科学计算平台,它内置了许多非常有用的第三方库,我们装上Anaconda,就相当于750+流行的Python&R包自动安装好了,跨平台,有可扩展管理工具conda,非常简单易用,免费分发,有非常活跃的社区。
Python开发方式有两种:
- 写程序写在一个文件中然后编译再执行 工具:记事本、pycharm
- 交互式编程 写一行代码执行一行 方便调试 工具:终端、jupyter notebook
-
- 使用REPL(python shell)交互式编程
_代表上一次的运算结果
输入 keyword
Sum
Int
float
-
- 脚本式编程,编写python源码
注意:
python3之后 预期的源码编码必须是utf-8
python2 预期的源码编码是ascii
# coding, xxx
# -*- coding: GBK -*-
编码统一使用UTF-8
Notepad++ 设置->首选项->新建
新建文件时注意看右下角
-
- 使用IDE
使用JetBrain公司的python IDE
-
-
- 下载并安装pycharm
-
实验:
- 安装anaconda 先下载再安装
- 安装notepad++ 新建文件设置为utf8
- python类型和运算符
- 内建类型
- python是多范式语言:
- 内建类型
面向过程
面向对象
函数式
所有数据都是对象
用直接表示法来编写数值,能用直接表示法来建立实例的类型就是内建类型
-
-
- 数值类型
-
所有的数据都是对象
用直接表示法编写数值.
整数类型举例
>>> 10
10
>>> 0b1010
10
>>> 0o12
10
>>> 0xa
10
>>> type(10)
<class 'int'>
>>> type(0b1010)
<class 'int'>
>>> int('10')
10
>>> int (3.14)
3
>>> int(True)
1
>>> oct(10)
'0o12'
>>> hex(10)
'0xa'
>>>
-
-
- 浮点数
-
举例
>>> type(3.14)
<class 'float'>
>>> 3.14e-10
3.14e-10
>>> float('3.14')
3.14
>>> int('3.14')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '3.14'
>>> int(float('3.14'))
3
>>>
-
-
- 布尔类型
-
True
False
将 None(类似Null)、False、0、0.0、0j(复数)、’’空字符串、()空元组、[]空列表、{}空字典等传入bool(),都返回False,若这些类型的其他值传入bool(),都返回True.
举例
>>> bool(None)
False
>>> bool(0)
False
>>> bool('')
False
>>> bool(0j)
False
>>> bool('hello')
True
>>>
-
-
- 字符串
-
用’’或””来括住字符串,两者作用相同
举例
用’’或””不可以换行,必须换行用’’’ 三重引号
举例
>>> 'farsight'
'farsight'
>>> 'sz"farsight'
'sz"farsight'
>>> print('sz"farsight')
sz"farsight
>>> print('c:\fs')
c:
s
>>> print('c:\\fs')
c:\fs
>>> 'abc
File "<stdin>", line 1
'abc
^
SyntaxError: EOL while scanning string literal
>>> ''' abc
... def
... hij
... klm
... '''
' abc\ndef \nhij\nklm\n'
>>> print('''abc
... def
... hij''')
abc
def
hij
>>>
-
-
-
- 格式化字符串
-
-
>>> 'hello,%s world'%'python'
'hello,python world'
>>> '你目前的存款%f'%500.5
'你目前的存款500.500000'
>>> '%d/%d=%f'%(10,3,10/3)
'10/3=3.333333'
python3建议用的格式
举例
>>> '{}/{}={}'.format(10,3,10/3)
'10/3=3.3333333333333335'
>>>
-
-
-
- str和byte解决编码问题
-
-
python3支持unicode,每个字符都包含了unicode字符
举例
>>> text='钟'
>>> len(text) #python3 unicode char
1
>>> text.encode('UTF-8')
b'\xe9\x92\x9f'
>>> text.encode('gbk')
b'\xd6\xd3'
>>> gkb_imp=text.encode('gbk')
>>> gkb_imp
b'\xd6\xd3'
>>> gkb_imp.decode('gbk')
'钟'
>>> gkb_imp.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation by
te
>>>
可理解的东西变为不容易理解的东西就是编码 encode,反之decode
python2用索引获取的字符串值其实是存取某个位置的字节.
python3用索引获取的字符串值其实是存取某个位置的字符.
举例
>>> text='创建不可修改'
>>> text[0]
'创'
>>> text[1]
'建'
>>> '建' in text
True
>>> 'a' in text
False
>>>
python2,3中字符串是不可变动的,一旦创建不可修改
-
- 群集类型(内建的数据结构)
编程过程中需要用不同的数据结构来收集数据,在python不用别的标准库,语言本身就直接支持,这也是易于使用的原因之一.
-
-
- 列表
-
特性有序,具有索引,内容和长度可变.用[]直接表示法,列表每个元素(,)分割开
举例
只有可迭代对象才可创建列表
举例
>>> nums=[1,2,3]
>>> nums
[1, 2, 3]
>>> len(nums)
3
>>> nums[1]
2
>>> nums[3]=0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> nums.append(4)
>>> nums
[1, 2, 3, 4]
>>> nums[3]=0
>>> nums
[1, 2, 3, 0]
>>> nums.remove(0)
>>> nums
[1, 2, 3]
>>> del nums[0]
>>> nums
[2, 3]
>>> 2 in nums
True