python
python是一门解释性语言(C语言编写的),意味着它是逐行翻译解释代码的
python的执行程序文件格式:.py
参考学习:黑马程序员Python教程_600集Python从入门到精通教程(懂中文就能学会)_哔哩哔哩_bilibili
python特点
- 面向对象
- 拥有一个强大的标准库
- 拥有大量的第三方模块
执行python程序的三种方式
- 解释器–python/python3
- 交互式–ipython
- 集成开发环境–pycharm
实现编写python程序执行
- 安装python解释器
- 创建
hello_world.py
文件 - 然后输入
print("hello_world")
- 保存,输入
python3 hello_world.py
执行
python版本
- python2.x默认不支持中文,命令:
python
- python3.x是支持中文的,命令:
python3
- 其中python2.6和2.7是python2.0向python3.0的过渡版本
python解释的多个版本
- Cpytho–官方版本(C语言)
- Jython–java版本
- IronPython–支持.net
- PyPy–python实现的,支持JIT即时编译
python语法
python程序常见错误
1.关键词编写错误
2.多条python语句写在一行
一行只需一条python语句
3.python语句前有空格
注意,python语法严格,在python语句前都不要轻易有空格或者Tab
模块
模块是Python程序架构的一个核心概念
模块就好比是工具包,要想使用这个工具包中的工具,就需要导入这个模块(import)
每个python文件都可以是一个模块
模块中的全局变量,函数都是模块能提供给外界直接使用的工具
import 导入模块(“工具包”)
import keyword # 关键字工具包
import random
random.randint(a,b) # 返回[a,b]区间的一个随机整数
注释
行注释
# 这是一个行注释
块注释
"""
这个是一个块注释
也称多行注释
"""
运算符
算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 1+1=2 |
- | 减 | 2-1=1 |
* | 乘 | 1*1=1 |
/ | 除 | 9/2=4.5 |
// | 取整数 | 9//2=4 |
% | 取余数 | 9%2=1 |
** | 幂 | 2**3=8 |
*
乘号在python中还能起拼接字符串的作用,计算结果就字符串重复指定次数
" hello " * 10
' hello hello hello hello hello hello hello hello hello hello '
python运算符
符号 | 意义 | |
---|---|---|
+= | 取加 | a+=b等效a=a+b |
-= | 取减 | a-=b等效a=a-b |
*= | 取乘 | a*=b等效a=a*b |
/= | 取除 | a/=b等效a=a/b |
//= | 取整除 | a//=b等效a=a//b |
%= | 取余 | a%=b等效a=a%b |
**= | 取幂 | a**=b等效a=a**b |
注意:python中没有++和–
逻辑运算符
- and 与
- or 或
- not 非
- in 是否存在
- is 是否
运算符支持的数据类型
运算符 | python表达式 | 结果 | 描述 | 支持的数据类型 |
---|---|---|---|---|
+ | [1,2]+[3,4] | [1,2,3,4] | 合并 | 字符串,列表,元组 |
* | [“hi”]*4 | [“hi”,“hi”,“hi”,“hi”] | 重复 | 字符串,列表,元组 |
in | 3 in (1,2,3) | True | 元素是否存在 | 字符串,列表,元组,词典 |
not in | 4 not in (1,2,3) | True | 元素是否不存在 | 字符窜,列表,元组,词典 |
>,>=,==,<,<= | (1,2,3)<(2,2,3) | True | 元素比较 | 字符串,列表,元组 |
变量和数据类型
变量的命名
标识符
与C/C++相同:数字,下划线和字母,然后数字不能开头且不能和关键词同名
变量的信息
内存中的一个变量包括以下信息
- 变量的名称
- 变量保存的数据
- 变量存储数据的类型
- 变量的地址(标示)
在python中定义变量不需要指定类型,它会根据赋值自动确定类型
变量的数据类型
数字型
- 整型int
- 浮点型float
- 布尔型bool—非零即真
- 复数型complex
非数字型
- 字符串str
- 列表list
- 元组tuple
- 字典dict
可以用type函数查看变量的类型
type(2**100)
字符串间可以用+拼接,但是字符串和数字不能进行计算
全局变量-global关键字
它会告诉解释器后面跟的变量是一个全局变量
变量的类型转换
函数 | 说明 |
---|---|
int() | 整型转换 |
float() | 浮点型转换 |
基本的输入输出
input()—输入的都是字符串
str = input("提示")
print()
print("你好")
在默认情况下,print函数在输入出后会自动换行,其中在print打印的内容后面加上,end=""
,可以取消自动换行
print("ni",end="")
print("hao")
格式化字符
格式化字符 | 含义 |
---|---|
%s | 字符串 |
%d | 有符号十进制整数,%06d表示输出的整数显示位数,不足的地方使用0补全 |
%f | 浮点数,%.2f表示小数点后只显示两位 |
%% | 输出% |
print("格式化字符" % 变量名)
print("格式化字符" % (变量1,变量2,...))
逻辑语句
判断语句
if
#if冒号后缩进相同的可以看成一个代码块
if 条件1:
a = 3
b = 4
elif 条件2: #elif 类似else if
b = 3
elif 条件3:
b = 6
else:
a = 5
d = 6
e = 7
循环
while
while 条件:
todo_1
todo_2
for
for val in list:
todo_1
todo_2
else: # 此段可有可无,如同 if else里的else
没有通过break退出循环,循环结束后就会执行该段代码
函数
定义
def 函数名(参数1, 参数2, ...):
函数封装的代码
...
return
注意:函数内return后面的代码不会执行
函数的多值参数
类型 | 作用 |
---|---|
* | 表示元组的多个参数 |
** | 表示字典的多个参数 |
公共函数
函数 | 功能 | 备注 |
---|---|---|
len(a) | 取得元素数量 | |
del(a) | 删除元素 | |
max(a) | 返回容器中元素最大值 | |
min(a) | 返回容器中元素最小值 | |
cmp(a,b) | 比较两个值,-1小于/0等于/1大于 | python3.x已经取消 |
切片
描述 | pythoy表达式 | 结果 | 支持的数据类型 |
---|---|---|---|
切片 | “0123456789”[::-2] | “97531” | 字符串,列表,元组 |
dir()内置函数
可以查看一个对象所有的函数
id()函数
可以获取变量地址
不可变类型(指只能修改地址来修改变量值)
- 数字类型
- 字符串
- 元组
可变类型(指不修改地址就可以修改变量值)
- 列表
- 字典
非数字型变量
列表
list—类似数组,但是又不同(可以存储不同类型的数据)
num_list = [1, 2, 3]
函数 | 使用 | 作用 |
---|---|---|
index() | 取得索引 | |
append() | 末尾添加数据 | |
insert() | 指定位置添加数据 | |
extend() | 把整个列表添加到末尾 | |
remove() | 删除某个数据 | |
pop() | 删除末尾或者指定索引位置的数据 | |
count() | 统计列表中某一个数据出现的次数 | |
sort() | 排序(默认升序,reverse=false) | |
reverse() | 反转列表顺序 |
del关键字
主要是用于删除处于内存中的变量。
len()函数:主要是用于统计列表中元素的个数
元组
Tuble与列表类似,不同之处在于元组的元素不能修改
info_tuple = (1, 2, 3)
info_ming = ("小明", 22, 180)
str1 = "姓名:%s, 年龄:%d, 身高:%d" % info_ming
print(str1)
注意:在只要定义一个元素的元组时,元素后面一定要加一个
,
tuple()转换成元组类型
list()转换成列表
字典
类似hash表
字典是保存无序的对象集合
xiaoming = {"name":"小明",
"age",18,
"height":1.80}
函数 | 使用 | 作用 |
---|---|---|
update() | 更新字典 | |
pop() | 删除字典中某个键值对 | |
clear() | 清空字典 |
字符串
与C++中的字符串相似,但是末尾没有’\0’
str 可以用""
,也可以用''
函数 | 使用 | 作用 |
---|---|---|
len() | 获取字符串的长度 | |
count() | 统计字符串中某个子串出现的次数 | |
index() | 获取字符串中的某个子串的索引下标 |
类
定义
class 类名:
def 方法1(self, 参数列表): # self 相当于this指针
# Todo1
def 方法2(self, 参数列表):
# Todo2
构造和析构方法
def __init__(self):
# todo
def __del__(self):
# todo
# 还有一个默认输出方法
def __str__(self):
# todo
# 必须返回一个字符串
return "__str__"
is 和 ==的区别
is是判断二者的地址是否相等,而== 是判断二者的数据是否相等
私有属性和私有方法
# 私有只要在命名前加上__
class Person:
def __init__(self):
self.__age = 18
def __func(self):
print("私有方法")
实际上python并没有真正的私有,只需要在私有属性命名前加上_类名,就可以访问
类的继承
class 类名(父类名):
pass
Python pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
在 Python3.x 的时候 pass空函数可以写或不写;python2.x,空函数一定要写,
重写
跟C++一样,子类覆盖父类的方法
super().父类方法,可以在子类中调用父类方法
多继承
python 提供了一个可以查继承关系的方法 _mro_
多态
父类中的方法在不同的子类对象的调用下产生不同的效果
类方法和静态方法
类属性就是针对类对象定义的属性,直接在类中定义,类似C++中类的静态变量
class person:
age = 0 # 类属性,所有类对象共有
def __init__(self):
self.height = 0 #实例属性,每个对象有一份
类方法就是针对类定义的方法,定义方式如下
class person:
@classmethod
def run(cls):
pass
静态方法
不访问实例属性和类属性的方法可以封装成静态方法
@staticmethod
def func():
pass
python运行
python的另一种执行方式-----Shebang符号
- 在程序的开头加上:
#!python程序的绝对路径
- 然后修改该文件的权限:
chomd +x xxx.py
主程序
使用__name__ == "__main__"来区分被调用模块和主程序
python2.x的编码问题
# *-* coding:utf8 *-*
# coding=utf8
eval函数
可以将字符串当成有效表达式来求值,并返回计算结果
eval("1+1") # 结果是2
OS模块
文件常用管理操作
__import__("os").system("终端命令")
django
model数据库表连接模块
django-admin startapp TestModel