Python学习笔记 语法与使用

2019-11-03  本文已影响0人  月影路西法

Python的安装

Python官方下载地址

image.png image.png

我下载的是3.8.0版本

Python环境变量

下载完成后进行安装,安装完成后配置环境变量,将安装完的目录路径在path路径中添加


环境变量.png

IDE

我所使用的IDE是IntelliJ IDEA 2019.2.2,你们也可以使用PyCharm 进行python的编程,这两个软件都是有JetBrains开发的,所用方法几乎一模一样,就是不知为什么JetBrains不把他们继承到一个里面
IntelliJ IDEA是不带Python开发环境的,需要先安装一下
启动后依次点击File->Setting->Plugins,在Marketplace中搜索Phthon然后进行安装


image.png

因为我这个是已经安装过的了所以是installed的,安装完成后重启IntelliJ IDEA就可以使用Phthon了

Phthon的基础语法

Python 标识符

在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
Python 可以同一行显示多条语句,方法是用分号 ; 分开

Python 保留字符

下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。

and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

行和缩进

学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
    # 没有严格缩进,在执行时会报错
  print ("False")

多行语句

Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:

total = item_one + \
        item_two + \
        item_three

语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

Python 引号

Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须的相同类型的。

其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。

word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""

Python注释

python中单行注释采用 # 开头。等同于别的语言的//

Python空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。

Phthon的变量类型

基本数据类型 中文解释
Numbers 数字
String 字符串
List 列表
Tuple 元组
Dictionary 字典

数字类型

一些数值类型的实例:

int long float comples
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3e+18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2E-12 4.53e-7j

Python字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。它是编程语言中表示文本的数据类型。
python的字串列表有2种取值顺序:

从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头


image.png

Python列表

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型。

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。


image.png

Python 元组

元组是另一个数据类型,类似于 List(列表)。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

Python 字典

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

基本类型总结

python的基本数字类型与java与C类似,支持int,long,float,complex四种类型
python的字符串类型只有String类型
Python的list使用 []标识,相当于java或者C中的数组
Python的元组使用()标识,作用相当于Java或C中的枚举,一经定义就无法重新复制
python的字典使用{}标识,作用相当于java中的List<Object>集合

基本类型的True与False

再说这个之前,我先说一个问题,就是True与false的问题,这个问题我大脑一直转不过来,为什么10 20一个Int类型的值能和true扯上关系,结果我查到了,原因如下

基本运算符

基本运算符的使用与java跟C完全一样,因此我直接忽略了此部分

逻辑运算符(使用在变量)

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

运算符 逻辑表达式 描述 实例
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

成员运算符(使用在list)

运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

身份运算符

运算符 描述 实例
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

Python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

运算符 优先级
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

条件语句

if else elif while for break continue 语句与java 不同的是可以不再if后面加(),但是在语句的后面需要加上:,别的没有什么变化
还有一个关键字pass,看说明是不做任何事,只是站位,不明白这个是做什么的

if 判断条件:
    执行语句……
else:
    执行语句……

Python的class

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class Employee:  #定义类Employee
   '所有员工的基类'
   empCount = 0#全局变量
 
   def __init__(self, name, salary): #构造函数
      self.name = name #self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print ("Total Employee %d" % Employee.empCount)
 
   def displayEmployee(self):
      print ("Name : ", self.name,  ", Salary: ", self.salary)

在上面的代码中创建了一个Employee的类


输出的结果.png

我们可以看到python中调用的方法与java类似

class的属性操作

你可以使用以下函数的方式来访问属性:

from Employee import Employee

var1 = Employee("hello" , 20 )
var1.displayCount()
var1.displayEmployee()

var2 = Employee("hello2" , 21 )
var2.displayCount()
var2.displayEmployee()

var1.salary = 2000
setattr(var2,'salary',3000)
print(var1.name)
print(getattr(var2,'name'))
var1.displayEmployee()
var2.displayEmployee()
输出结果.png

Python中还包含了一些内置属性


image.png

Python的垃圾回收机制

Python 使用了引用计数这一简单技术来跟踪和回收垃圾。
在 Python 内部记录着所有使用中的对象各有多少引用。
一个内部跟踪变量,称为一个引用计数器。
当对象被创建时, 就创建了一个引用计数, 当这个对象不再需要时, 也就是说, 这个对象的引用计数变为0 时, 它被垃圾回收。但是回收不是"立即"的, 由解释器在适当的时机,将垃圾对象占用的内存空间回收。
垃圾回收机制不仅针对引用计数为0的对象,同样也可以处理循环引用的情况。循环引用指的是,两个对象相互引用,但是没有其他变量引用他们。这种情况下,仅使用引用计数是不够的。Python 的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。作为引用计数的补充, 垃圾收集器也会留心被分配的总量很大(及未通过引用计数销毁的那些)的对象。 在这种情况下, 解释器会暂停下来, 试图清理所有未引用的循环。

类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。
通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。
继承语法如下

class 派生类名(基类名)
    ...

在python中继承中的一些特点:

如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。

class SubClassName (ParentClass1[, ParentClass2, ...]):
    ...

接下来我们看个例子

from Employee import Employee


class ManagerMan([Employee]):
    def __init__(self, name, salary,ManagerSalary):
        super(ManagerMan,self).__init__(name,salary)
        self.ManagerSalary =ManagerSalary

    def displayEmployee(self):
        print("Name : ", self.name, ", Salary: ", self.salary,", ManagerSalary: ", self.ManagerSalary)
from Employee import Employee
from ManagerMan import ManagerMan

var1 = ManagerMan("hello" , 20 ,10)
var1.displayCount()
var1.displayEmployee()

var2 = ManagerMan("hello2" , 21 ,10)
var2.displayCount()
var2.displayEmployee()

我创建了一个经理的class他继承了Employee的属性,在构造ManagerMan的时候比Employee多了一个ManagerSalary属性,并且我重写了displayEmployee方法
输出如下


image.png

class中单下划线、双下划线、头尾双下划线说明

image.png

以上就是Python的基本语法使用,如果想使用IO及其他操作,请参考python的api手册
我学习所使用的的教程网站
有关python自动化测试的帖子

上一篇 下一篇

猜你喜欢

热点阅读