IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 09 python基础 -> 正文阅读

[开发工具]09 python基础

前言:更详细学习python可参考:菜鸟教程

一、编程语言简介

1、编程语言分类:

面向对象(一类只定义一个对象):java、c++、C#、python、ruby
面向过程(用到什么定义什么):汇编语言、C、机器语言
面向对象跨平台语言:python、java、c++

跨平台:在不同操作系统写的代码能在不同的操作系统下运行

2、做测试为什么要学python?

python+selenium:web(b/s)功能自动化
python+appium:APP自动化
ruby+cucumber:

3、python有2个大版本:

Python 2.0 于 2000 年 10 月 16 日发布,增加了实现完整的垃圾回收,并且支持 Unicode。

Python 3.0 于 2008 年 12 月 3 日发布,此版不完全兼容之前的 Python 源代码。不过,很多新特性后来也被移植到旧的Python 2.6/2.7版本。

Python 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。

Python 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法。
本次学习用3.4版本,因为现在很多公司还在使用WinXP系统(占用资源少),而windowXP系统最高只支持python3.4.

4、安装python3.4

1、必须安装在默认路径下(否则后续使用容易出现问题)
2、配置环境变量:
计算机(右键属性)–高级系统设置–高级–环境变量–系统变量–双击path —编辑文本–光标移到最前边-输入C:\Python34\Scripts;(默认安装路径时)–光标在挪到最前边-输入C:\Python34;–保存退出
3、在cmd下输入python,出现版本号即为安装成功

5、第一个 Python 程序

交互式编程
交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。
Window 上在安装 Python 时已经安装了交互式编程客户端,提示窗口如下:
在这里插入图片描述

新建一个TXT文件,改名为.py文件 ; 右键打开方式:Edit with IDLE; 输入:hello world ;F5键运行,即可有上图效果

二、python基本规则

1、文件类型:.py 一个py文件是一个module模块,每次运行是运行整个文件;
2、不支持非英文字符,并严格区分大小写;
3、以行区分语句,一行为一条语句
4、多条语句写在一行需用英文输入法的分号;分隔开两条语句
5、一条语句写多行,在行尾敲续行符\
6、print(“”)打印内容到运行窗口,默认一行显示,多条print语句需在一行显示时,在前一条语句最后加 ,end=””
7、字符串需要用单引号(‘’)或双引号(“”)或三引号(“”” ””” 或’’’ ‘’’)引起来
8、注释分为单行注释:#多行注释:””” “”” 或 ‘’’ ‘’’ (避免多行注释与三引号混用出错)
9、python实现跨平台的方式是文件首行输入:#!所跨平台的python路径
10、指定编码格式:#-*- coding:utf-8 -*-#coding=utf-8
11、所有代码顶格写,当python区分代码块时才 缩进

三、定义变量

定义变量的三种方式:

  1. 变量名=值
  2. 变量名1,变量名2,变量名3=值1,值2,值3 【变量个数与值个数必须一样】
  3. 变量1=变量2=变量3=值

python不需要声明变量类型,但声明的时候必须带值
变量名可以由字母、数字、下划线组成(下划线开头有特殊意义,避开关键字)
python定义变量类似于把内存中以有的内容与我们的变量名建立联系
在这里插入图片描述

四、数据类型

1、整形:int

2、浮点型:float

  • 数据类型转换:数据类型名(要转的变量值)
  1. 整形转浮点型,具体数值后加. 0
  2. 浮点型转整形 直接舍弃小数位
  3. type()可以返回数据类型
  • 整形与浮点型 运算规则:
    ①int与int运算结果—int
    ②int与float运算—float
    ③float与float运算 —float

3、字符串:str

(1) 字符串表示

单引号(‘’)双引号(“”)三引号(“”” ””” 或’’’ ‘’’)引起来

例:ss =”abcdefgh”   #ss是个str类型变量
# 用len() 可以返回字符串字符的个数

(2) 字符串切片

字符串切片也就是截取字符串,取子串。可通过索引返回索引位置上的元素。

  • 索引
    索引有两种表示方式:
    1、o开始到len(变量名)-1 结束;
    2、-len(变量名)开始到-1结束;

注:
a. 字符串元素按不同方向取,同一个元素有两种索引表示方式
b. len(变量名):返回字符串的长度

  • 截取单个字符变量名[索引]

  • 连续截取字符变量名[开始索引:结束索引]

  • 如果省略开始索引,相当于从字符串开始处开始截取;如果省略结束索引(或超过最大索引),相当于截取到字符串的结束处。
  • 例:ss[ :3] 、ss[ : ] 、ss[0: ]
  • 非连续截取字符变量名[ 开始索引 : 结束索引 : 步长]
  1. 返回从开始到结束索引位置上的元素,走步长数取一个,开始索引对应元素取,结束索引对应元素不取
  2. 没有步长,步长是正数: 左 → 右截取: 左开始,右结束
  3. 步长为负数: 右 → 左截取: 右开始,左结束
    【注:若步长的方向索引的方向相反,则取不到字符或子串;若开始与结束索引留空,则以步长方向截取,并且结束索引位置可以取到】
    体会:ss = "abcdefgh"时,s0 = ss[::-1],s1 = ss[0::-1],s2 = ss[-8::-1],s3 = ss[3:2:1],s4 = ss[0:7:-1]
    在这里插入图片描述

(3) str与其他数字类型相互转换

str→int/float

str内容是int数字→int/float
str内容是float数字的→float

int/float→str

直接转即可 str(int/float)

所有数据类型都可以转换成字符串,完全转换(括号,逗号都转)

(4)str的运算

字符串的比较运算,比的是字符对应的ASCII码的大小,第一个字符一样的比第二个字符,…以此类推。
字符串的算术(复合)运算只支持++=(数字与字符串的运算)与**=(字符串与字符串的运算)
字符串的,成员运算innot in),判断一个字符串是否是另一个字符串内连续的一部分,是就返回True,否则返回False

4、有序可编辑的列表:list

语法:变量名=[元素1,元素2,...]
特点:有序的可以编辑的列表
常用用法:以 list1=['aa', 'cc', 'dd', 'aa', 123, 'abc123']为例
list1[索引]=值: 修改索引位置上的元素
list1.append("元素"):追加元素到list1末尾
list1.insert(索引,元素):在指定的索引位置上插入元素
list1.remove("元素"):移除元素【当元素有重复,移除第一个】
list1.reverse():元素位置反转
list1.sort():元素从小到大排序【元素能比大小】
list1.sort(reverse=True):元素从大到小排序【元素能比大小】
list1.sort(reverse=False):元素从小到大排序,同list1.sort()【元素能比大小】
max(list1):返回最大元素【元素能比大小】
min(list1):返回最小元素【元素能比大小】
del list1[索引]:移除截取到的所有元素,若索引为空则是,移除整个变量

5、元组:tuple

语法:变量名=(元素1,元素2,...)
特点:有序的不可编辑的列表
常用用法:
例: tt=('bb', 'ee', 'aa', 'ttt', 'asfs123')
max(tt):返回最大元素【元素能比大小】
min(tt):返回最小元素【元素能比大小】

注:定义tuple只有一个元素:变量名=(元素,)

6、无序集合:set

语法:变量名={元素1,元素2,...}
特点:无序的集合,可以编辑,元素不能重复
常用用法:以ss={“tt”,“aa”,“bb”,123,435,“agc”}为例
ss.add(元素):添加元素到ss
ss.remove(元素):移除元素
max(ss):返回最大元素【元素能比大小】
min(ss):返回最小元素【元素能比大小】

注:1、max()与min()只有元素能比大小的时候才能使用
2、 list、tuple与set相互转换:如,变量名2=list(变量名1)

7、 字典:dict

语法:变量名={"key1":"value1","key2":value2","key3":value3}
特点: 可以编辑,key不能是list,set类型
常用用法:以dd={"name":"zs","sex":"m","age":18}为例
dd[key]:返回key对应的value
dd[key]=value: 修改key对应的value,如果key不存在,新增一对key:value元素
del dd[key]:移除key:value元素
dd.keys():返回所有key
dd.values():返回所有的value

注:
1、字典元素是由key:value组成的元素对,
2、key,value不能为null,
3、key不能重复,无序
4、dict不与其他类型相互转换,要么报错,要么无意义

8、布尔类型:bool

布尔类型只有2个值,True与False

bool类型与字符串str的相互转换:

bool---->str:
        True--->"True"
        False--->"False"
  str---->bool:
       ""-------->False
       非""------->True

bool类型与int,float的相互转换:

bool---->int,float:
      True----->1,  1.0
      False---->0,  0.0
int,float---->bool:
      0,0.0----->False
      非0, 非0.0------->True     

五、运算符

算术运算符+ - * / % ** //
复合运算符+= -= *= /= %= **= //=

注: / 【python3.0之后结果是float,两个整数的/运算也是float】
** 幂运算符【5**3等价于5*5*5
// 整除运算符【运算结果取整数部分,类型不变】

比较运算符> < >= <= != ==

注: != 不等于 ; == 等于

逻辑运算符andornot【非】
身份运算符isis not

注:参考id(变量/常量)返回的存储位置,若返回位置一样,则is的结果就为 true,否则为 false

六、条件语句

获取键盘上的输入: input(“提示信息”)

  • if语句
 #语法1:
  if 判断:
          .........满足判断条件执行的代码块
  else:
         ..........不满足判断条件执行的代码块

 #语法2:
 if 判断1...........满足判断条件1执行的代码块
 elif 判断2...........不满足判断条件1,满足判断2执行的代码块
   #.....
 else:
       ...........不满足所有判断条件执行的代码块

注: 条件语句可以嵌套,一般嵌套不超过4层,否则可读性就很差

七、循环语句

1、while循环

while循环语法:


       while 判断:
            ..........满足判断条件执行的循环体
       else:   #else可不写
            ..........不满足判断条件执行的代码块

循环体里可以:
1、continue:跳过循环体内continue后面的语句,执行下一次循环判断
2、 break:整个循环终止

应用while循环的例子:

# 打印1~100的数,和,当和》2000时打印“aaa”,否则打印“bbb”,当和>3000时终止。不用else,elif
 a=1
 count=0
 while a<=100:
     count+=a
     a+=1
     print(a,count)
     # if count>3000:
     #     break
     # if count>2000:
     #     print("aaaaa")
     #     continue
     if count>2000:
         if count>3000:
             break
         print("aaaaa")
         continue
     print("bbbbb")

ss="sdfdfsdgdfgfhfghgjghjuyutyyrtyerteff"
# 打印字符串每个元素,每个元素后面1~10
i=0
while i<len(ss):
    print(ss[i])
    i+=1
    a=1
    while a<=10:
        print(a)
        a+=1

2、for循环

for循环语法:

  for s in ss:  #【ss:多元素的数据类型】
          .....ss内有元素从未赋值给s时执行的循环体
     else:  #else可不写
          .....ss内没有元素从未赋值给s时执行的代码块

1、for循环次数为 ss内元素的个数,没有死循环
2、ss处通常写range(数字1,数字2)
【注:生成>=数字1并且<数字2的rang类型数据;可以当成(或转成)list类型用,数字1处未填的默认为0,数字可以是正整数也可以是负整数】
3、 for循环里也可以使用continue与break

八、字符串格式化与转义字符

  • 字符串格式化
    用法(通常是在print里用)
    “aaa%saaaaaa%daaaaaaaa%faaa” % (“tt”,123,123.99)
    例:print("%2d*%.2f=%2s"%(9,12.3,“ttt”))
    %与字符间的数字若是整数表示占位(默认占1位),若是.整数表示保留几位小数(默认保留6位小数)

常用的有:
%s: :受字符串
%d :接收为整数
%f : 默认接收为6位小数的float
%e: 用科学计数法格式化浮点数

  • 转义字符
    需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符
    常用的转移字符有
符号含义
\(在行尾时)续行符
\\反斜杠符号
\'单引号
\"双引号
\b退格(Backspace)
\f换页
\n换行
\t横向制表符
\r回车

九、方法(函数)

  • 语法:
def 方法名(参数) :
	...方法体

方法名:
1、数字字母下滑线组成,数字不能开头,
2、下划线开头有特殊意义,避开关键字,
3、建议小写开头

  • 参数
    方法定义的是时候可以带参数也可以不带参数,若是定义的时候无参数,调用的时候也不要传参数。若定义的时候带参数有以下情况:
    定义时,参数个数确定,且不带默认值,则定义了几个参数,调用时就必须传几个参数;
    定义时,参数个数确定,部分参数有默认值,有默认值的参数(靠后写),调用时可以选择传值或者不传,传就是传的值,否则就是默认值;
    定义时,参数带*号,表示可接受N个参数,接收为tuple类型,调用时,接收的每个值都是tuple的元素;

注:
(1)带*号的参数一般不与带默认值的参数一起用,没意义。
(2)带*号的参数一般不与带默认值的参数 靠后写

  • 返回值:return
#语法:
		return 返回内容  

注:
(1)若定义方法时没有写return 语句,默认返回None
(2)return标志方法的结束,写在后边内容将不会执行(python不报错,java会给报错)

  • 调用 方法
    在本文件内调用本文件的方法:方法名(参数值)
    跨文件调用方法有两种写法:
#写法1
	导包:import1.2.....文件名
	调用:包1.2.....文件名.方法名(参数)
#写法2
	导包:from1.2.....文件名 import 方法名 【*:代替所有方法名】
	调用:方法名(参数)

补充:
1、方法/函数不调用就不会执行
2、包名,文件名:遵守变量名的命名规则,避开同名
3、参数之间 逗号 隔开
4、导包快捷键(pycharm提供的功能):光标放在在调用 方法的() 前,按Ctrl +Alt +空格 键,可快捷导包
5、包(python package)与文件夹(directory)的区别:包里有_init_.py文件,而文件夹里没有;有些版本python不能跨文件夹调用,故一般文件夹里不放代码,可以放测试数据、报告
6、if __name__=="__main__": ........代码块
所在文件被直接运行时才会执行 此代码块;若是通过导入到其他文件,在其他文件中 不会运行

  • 几个常用方法函数:
    包: import time
    方法: time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())格式化输出日期
    方法: time.sleep(n):当前进程休眠 n秒

%Y: 4位年
%y: 2位年
%m: 月
%d:日
%H: 24小时制小时
%I: 12小时制小时
%M:分钟
%S: 秒

包: import calendar
方法: calendar.isleap(年):判断年是否是闰年,如果是返回True,否则返回False

包: import random
方法: random.randint(数字1,数字2):生成>=数字1 <=数字2 的整数的一个随机数

十、文件操作

  • 打开文件
    变量名=open("文件名","打开方式")
    以下以ff=open(“aa.txt”,w+)为例

打开方式有:
w+: 如果文件不存在,新建一个写,如果存在,新建一个覆盖
a+: 如果文件不存在,新建一个写,如果存在,在原文件末尾追加(默认焦点在最后)
r+: 如果文件不存在报错,如果存在,从前往后覆盖

  • 修改文件内容
    ff.write("写入内容")

  • 读取文件内容
    ff.read(n):读 n 个字符 ,结果为str类型【从当前焦点位置开始】
    ff.read():读所有字符 ,结果为str类型【从当前焦点位置开始】
    ff.readline(): 读一行,结果为list类型【从当前焦点位置开始】
    ff.readlines(): 读所有行,结果为list类型【从当前焦点位置开始】

  • 关闭文件
    ff.close()


1、ff.tell(): 返回当前焦点位置
2、ff.seek(数字):焦点跳转到 数字 位置
3、 文件打开一次,只能读或者写,不能同时进行

十一、面向对象编程:类

1、相关概念

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
对象(object) /实例(instance):属于类的一个具体的个体
类变量:类的属性特征,类内定义的变量,这个类的所有对象都有
实例变量:属于类的某一个个体自己的属性特征

2、类的定义

  • 语法:
class 类名 :
	...变量【属性特征】
	...方法【功能】
  • 类名:
    (1)数字字母下划线组成,数字不能开头,下划线开头有特殊意义,
    (2)避开关键字;
    (3)建议大写开头

下划线开头的特殊意义 :
a. 类的属性或方法以 双下划线开头(表示私有的),有效范围在class内部,出了class边界,类对象,子类对象,都不能调用
b. 类名(或类外方法)以 下划线开头(表示受保护的),不建议跨文件包调用,且from …import * 时会出错。

  • 类内方法

    (1)遵守类外的方法定义的规则
    (2)第一个参数默认self,这个参数定义时必须有,调用时不用传值,是当前类的对象

3、调用

  • 语法:
    (1)先创建对象:对象名=类名(参数)

    (2)通过对象调用类变量/方法 : 对象名.变量/对象名.方法

调用 构造方法 生成对象(生成对象的时候执行构造函数),通过 对象 调用类的方法
类 定义完不调用不会执行,类内方法,只能通过对象调用

  • 构造方法 /构造函数:
    (1)作用:构建对象,初始化对象,生成对象
    (2)规则:方法名固定:__init__;有默认参数 self【也是当前类的对象】
    (3)调用:类名() 【类名代替方法名执行】
    (4)不能写return语句,默认 返回对象
    (5)定义类时,如果没有定义构造方法,系统会默认创建一个空的构造方法

4、继承

  • 语法
 class 子类名(父类1,父类2,....):
      ...........
  • 继承原则
    a. 构造方法的继承:
    子类有用子类自己的;子类没有找父类的,第一个父类没有,就找第一个父类的父类,…,若也没有就找第二个父类的,…;所有的父类都没有,系统默认创建
    b. 同名属性方法的继承:
    子类有用子类自己的;子类没有找父类的,第一个父类没有,就找第一个父类的父类,…,若也没有就找第二个父类的,…;所有的父类都没有就会报错
  • 3个常用方法
    isinstance(对象1,类1)
    判断对象1 是否是 类1 的实例,如果是返回True,否则返回False
    issubclass(类1,类2)
    判断类1 是否是 类2 的子类,如果是返回True,否则返回False
    super(类1,对象1).父类的属性或方法(..):
    通过对象1调用 类1的父类 的属性或方法

4、重载(overload)

子类有父类同名的属性方法,方法名相同参数不同

  • 重写overwrite /覆盖 override
    子类有父类同名的属性方法,方法名相同参数也相同

十二、通过pymysql操作MySQL

  • 首次操作需要安装python的库pymysql
    在cmd下输入命令:pip install pymysql==0.10.0即可在线自动安装
  • 导包:import pymysql
  • 链接数据库
# 创建连接:host:数据库地址  user: 用户名   passwd: 密码      db: database数据库名
conn=pymysql.connect(host="localhost",user="root",passwd="",db="testdb")
	#链接的名字可自定义
#创建游标(输入指令的窗口)  通过链接创建游标,游标的名字可自定义
cursor=conn.cursor()  	
  • 常用操作
    数据库操作的命令都可写在:游标.execute()
# 通过游标执行sql语句,返回影响条数
cursor.execute("update hometown set city=\"广州\" where id= 666 ;")
aa=cursor.execute("select * from students;") 

print(aa)    #影响的条数可以用变量接收打印出来
#返回查询的数据到python
bb1=cursor.fetchone()   #返回一条数据【从当前焦点位置开始】
bb3=cursor.fetchmany(3)  #返回多条数据【从当前焦点位置开始】
bb4=cursor.fetchall()   #返回所有条数据【从当前焦点位置开始】

注:
1、得先有查询的操作,才可用变量接收查询到的数据;
2、查询到的数据为元组类型,多条数据的每条数据为元组的一个元素
3、当没有查到数据或焦点位置在最后时,得到的是空元组

  • 提交修改
    conn.commit() # 提交sql语句执行结果【如果需要】
    DML数据库语言才需要提交(insert、update、delete)
  • 关闭游标
    cursor.close()
  • 关闭连接
    conn.close()

附:思维导图

在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 19:08:14  更:2022-01-30 19:10:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:27:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码