首页 > 技术文章 > Python_学习

Bkxk 2019-03-06 15:39 原文

 

准备安装

安装python下载可执行安装程序,其他两个有安装失败

安装开发工具

Python的基本数据类型

Number:数字、int:整数、浮点数:float(不存在双精度double、short、long),bool布尔类型:true/false

complex复数

str字符串

10进制,2进制,8进制,16进制

0,1,2,。。。9,10:满10进一

0,1,10:满2进一

0,1,2,。。。7,10:满8进一

0,1,2,。。。9,A,B,C,D,E,F,10:满16进制

转义字符(不可见的字符)

\n换行

\'单引号

\t横向制表符

\r回车

“HelloWorld”[0]得到H

“HelloWorld”[1]得到e

“HelloWorld”[0:5]得到Hello

“HelloWorld”[6:11][6:]得到World

Python中“(数)组(序列)”的概念

列表list:

type([1,2,3,4,5])得到list

['a','b']+['c','d']得到['a','b','c','d']

a = [1,2,3]

a.append(4)(元组不可变)

print(a)

元组和列表的区别?tuple不可改变(值类型),list可改变(引用类型)

元组tuple:

(1,"1",True),(1,2)+(1,2),(1,2)*2,(1,2,3,4,5)[0]

3 in [1,2,3]

2 not in [1,3]

a = (1,2,3,['a','b','c'])

a[3]

a[3][2]得到c

集合set(无序)

{1,2,3}

{1,2,3} - {3}排除

{1,2,3} & {1,2}交集

{1,2,3} | {2,3,4}并集

type({})得到dict

type(set())

字典dict

很多个key value,是集合类型set,不是序列是无序不能切片

type({})得到dict

{‘Q’:‘新月打击’,'W','苍白之瀑'}注:key不能有重复的,而value可以是任何类型

{‘Q’:‘新月打击’,'W','苍白之瀑',1:'月之降临','1',[1,2,3]}['Q']访问字典

Python变量与运算符 

Python中没有常量概念:Python形式上的常量为:所有字母是大写的

Python变量区分大小写

定义变量:A = [1,2,3,4]

  B = [1]

  pring(A*3+B+A)

a=[1,2,3]

b=a

a[0]='1'

print(b)

int str tuple值类型,list set dict引用类型,list是会更改的

 

算数运算符:+ - * / // % **

赋值运算符:= += *= /= %= **= //=

关系运算符:== != > < >= <=

逻辑运算符:and or not 

成员运算符:in   not in

身份运算符: is   is not

位运算符  :&并且 |或者 ^按位异或 ~取反 <<左移动 >>右移动

Python分支、循环、条件、枚举

Python没有switch

一个正常的Python项目是有多个模块构成的

#单行注释

'''  '''多行注释

if else for while

mood = True

if mood :

    print(0)

else :

    print(1)

 

username = 'kai'

password = '111111'

 

print('请输入用户名:')

user_name = input()

print('请输入用户密码:')

pass_word = input()

if username == user_name and password == pass_word:注:冒号前不加空格

print("登录成功")

elif username == '':

print("等待~")

else:

print("登录失败")

 

#递归时使用较多,

count = 1

while count <= 10:

count +=1

print(count)

else:

pring('终于满级了')

 

#主要用来遍历、循环 序列或者集合、字典

a = [['apple','orange','banana','grape'],(1,2,3)]

for x in a:

for y in x:

if y == 'orange':

break

print(y)

else:                      //python中for循环包含了else,一般情况不写else

print("最后执行")

 

a = [1,2,3]

for q in a:

if q == 2:

continue

print(q)

else:

print('EOF')

 

a = [1,2,3,4,5]

for i in range(0,len(a),2)://类似foreach,0起始值,a循环数,2间隔数,倒序循环range(len(a),0,-2):

print(a[i], end=' | ')

 

//任意模块都能当做main()程序入口吗?

包->(多个)模块.py->(多个)类class classname(object):->函数变量

 

python中:包下需创建__init__.py(本身也代表一个模块)

  __init_.py的所在包被引用时,__init__.py会自动初始执行

 

第一种导入form seven.c7 import a //使用c7模块下的变量,

  print(a)  

第二种导入_all_ = ['a']:写在__init__.py中

  form seven.c7 import * 只引入了导入时指定的变量

避免循环引入会报错!p1->p2,p2->p1

  

Python函数(类似Java方法)

print(“HelloWorld”)打印

type(1)得到变量的数据类型

bin(10)其他进制转换为2进制

int(0b111)其他进制转换10进制

hex(888)其他进制转换16进制

oct(0b111)其他进制转换16进制

bool(1)bool('a')true

bool('')bool(0)false

len((1,2,3))

max((1,2,3))

min((1,2,3))

min('hellworld')

ord('w')转换为ascll码,

id()某一个变量在内存的地址

str()转换字符串,toString()

a = 3.1415926

result = round(a,2)变量,保留小数点2位

print(result)

 

def add(x,y,):  //默认返回是tuple元组

result = x + y

return result

add(1,2)

def name(name='王路凯',age='21',sex)://默认参数

print(name)

name(sex='女')

 

Python的面向对象(pass占位符)

在模块中,定义类和实例对象一般分开

class Student():

name = ''

__age = 0

def __init_(self,name,age):#Python中的构造函数,初始化对象的属性

self.__name = name#如没有self则为类变量,有为实例变量,python会先找实例变量->如果没有则使用类变量->如果还没有去父类查找

self.__age = age

 

def print_file(self): #定义时必须加self,代表一个实例对象(只是python中的特征,类似Java中的this关键字,但不是关键字,是可以任意定义的)

print('名称'+ self.name)

print('年龄'+ str(self.__age))

 

student1 = Student('王路凯',21) #实例化、new对象

student1.print_file()

print(student1.name)#实例变量

pring(Student.name)#类变量

概念:类变量   和类相关的变量

  实例变量 和对象关联的如:self.name / self.age

  实例方法 def print_file(self): 实例方法调用类变量:Student.name和self.__class__.name

  类方法   @classmethod 

def plus_sum(cls):

print(cls.name)

  静态方法 @staticmethod 

def add(x,y):

print(Student.name)

  def marking(self,age):建议通过方法更改数据,不过变量多的话方法同样多

if age > 100:

return '年龄不能大于100岁'

self.__age = age

将变量和方法设置 public private,Python中:方法和变量名字前加入__marking(),__name为私有的,

因动态语言的特性,有时调用私有变量是添加变量,不可以动态添加私有变量,严格意义上说python没有私有变量,调用私有变量方式为:student1._Student__age

 

Python封装、继承、多态

Python私有属性@property方法

class Person(object):

def __init__(self,name,age):#在定义对象属性的时候,私有属性不加__

self.name = name

self.age = age

@property#相当于getName()方法

def name(self):

return self.__name#但是返回的时候还是要self.__私有属性名

 

@name.setter#相当于setName()方法

def name(self,name):

if len(name) > 6:

print("非法")

else:

self.__name = name#赋值的时候也要self.__属性名 = 属性名

 

p1 = Person("张三12358",13)

print(p1.name)

 

'''

总结:1、在定义对象属性的时候不需要在对象属性加__

2、要先定义@property相当于get方法

3、再定义@属性名.setter相当于set方法

4、在对象调用的时候直接是对象名.属性名

form c6 import Student

class People(Student):#继承

Student.__init__(self,name,age) #子类调父类构造函数

super(Student,self).__init__(name,age)

 

Python中正则表达式与JSON

import re#Python默认模块中提供的正则表达式

a = 'C|C++|Java|Python'

r = re.findall('Python',a)正则匹配

pring(r)

 

数词量

re.sub('C','GO',lanuage,1)正则替换

把函数作为参数传递

search与match函数

re.search()

re.match()

group()分组

 

JSON

json = '{"name":'a',"age":10}'

pythonstr = json.loads(json)#将json字符串转换为python数据结构,也称为反序列化

整理

jsonpython

objectdict

array list

stringstr

numberint

number float

true True

falseFalse

nullNone

student = [{'name':'a','age':10},{'name':'b'}]

jsonstr = json.dumps(student)#将python数据结构转换为json字符串,也称序列化

 

Python高级语法及用法

枚举也是类,

form enum import Enum

class VIP(Enum):

YELLOW = 1

Y_ELLOW = 1 #如值相同,python至识别第一个

GREEN = 2

BLACK = 3

RED = 4

 

print(VIP.YELLOW.value)

VIP.YELLOW = 2#枚举中的变量不可以更改

@unique:枚举的装饰器

Python一切皆对象(类、对象、结构)

 

lambada(表达式)只能是表达式

三元表达式

 

Python操作三大数据库Mysql、Mongodb、Redis

......

Python学习False框架

......

推荐阅读