有什么國外的黃網(wǎng)站百度服務(wù)中心投訴
文章目錄
- 1. 入門
- 1.1 解釋器的作用
- 1.2 下載
- 1.3 基礎(chǔ)語法
- 輸入輸出語法與引號
- 注釋:
- 變量:
- 數(shù)據(jù)類型與四則運算
- 數(shù)據(jù)類型
- 四則運算
- 數(shù)據(jù)類型的查看`type()`
- 數(shù)據(jù)類型的轉(zhuǎn)換`int()`、`int()`、`float()`
- 流程控制
- 格式化輸出
- 循環(huán)與遍歷
- 邏輯運算符
- list遍歷
- 字典dict遍歷
- 跳出循環(huán)
- 面向?qū)ο驩OP(封裝、繼承、多態(tài))
- 封裝:函數(shù)、全局變量與局部變量
- 函數(shù)的嵌套
- 類`class`:萬物皆對象
- 構(gòu)成:類名、屬性(一組數(shù)據(jù))、方法(函數(shù))
- 創(chuàng)建與調(diào)用:class name
- 創(chuàng)建的倆個要素:
- 類的繼承
- 多重繼承與多層繼承
- 文件IO
- import語句
- time函數(shù)
- csv模塊讀寫
- 讀取
- 寫出
1. 入門
1.1 解釋器的作用
Python解釋器作用:運行文件。
Python解釋器類型:
- CPython:官方開發(fā)的C語言解釋器
- IPython:基于CPython的一種交互式解釋器
- PyPy:基于Python開發(fā)的解釋器
- Jytion:運行在Java平臺的解釋器,直接把Python代碼解析為Java字節(jié)碼執(zhí)行
- IronPython:運行在.Net平臺的解釋器,將Python代碼編譯為.Net字節(jié)碼
1.2 下載
官網(wǎng):https://www.python.org/
注意Add Path。
驗證:打開cmd,運行python.
(venv) F:\myStudySpace\pythonStudy\spider\web_crawler>python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
1.3 基礎(chǔ)語法
輸入輸出語法與引號
print()
print('')
print('''多行''')
print("")
print("""多行輸出""")
print(123)
inputTxt = input("plese input:")
print(inputTxt)
注釋:
# 單行注釋
"""
多行注釋
"""
'''
多行注釋
'''
變量:
變量是一個存儲數(shù)據(jù)的時候,當(dāng)前數(shù)據(jù)所在內(nèi)存地址的名字。
變量名 = 值
變量名規(guī)則:字母、下劃線和數(shù)字組成。不能以數(shù)字開頭
數(shù)據(jù)類型與四則運算
數(shù)據(jù)類型
- 字符串,拼接用+號
print('hello')
- 整型
print(99)
- 浮點型
print(3.14)
- list列表:
[]
- 下標(biāo)從0開始
- 切片語法:[起始:結(jié)束:步長]。左閉右開區(qū)間取值
name = "abcdef"
print(name[0])
# 取到結(jié)束
print(name[:])
# 取到結(jié)束
print(name[0:])
# 取到結(jié)束前一個
print(name[0:len(name)-1])
print(name[:len(name)-1])
print(name[:len(name):2])
"""
a
abcdef
abcdef
abcde
abcde
ace
"""
list_2 = ['a','b','c','d','e','f']
print(list_2[5])
print(list_2[0:len(list_2)-2:2])
## 反轉(zhuǎn)
print(list_2.reverse())
del list_2[2]
print(list_2)
# 刪除列表最后一個元素
list_2.pop()
print(list_2)
# 增加元素
list_2.append("6666")
print(list_2)
"""
f
['a', 'c']
None
['f', 'e', 'c', 'b', 'a']
['f', 'e', 'c', 'b']
['f', 'e', 'c', 'b', '6666']
"""
- dic字典(對應(yīng)map):
{}
xixi = {'name':'xixi',"age":18,'height':166.6}
print("正常的字典值:",xixi)
print(xixi['name'])
print(xixi.get('name'))
xixi["addr"] = "浙江"
print("增加后",xixi)
xixi["addr"] = "上海"
print("修改后",xixi)
del xixi["addr"]
print("刪除后",xixi)
四則運算
加、減、乘*
、除/
、取模%
、冪**
數(shù)據(jù)類型的查看type()
## 數(shù)據(jù)類型
str_1 = "123"
print(type(str_1))
str_2 = 123
print(type(str_2))
str_3 = 123.123
print(type(str_3))
list_1 = [1,2,3]
print(type(list_1))
# json
json_1 = {"name":"Huathy","age":18}
print(type(json_1))
# <class 'str'>
# <class 'int'>
# <class 'float'>
# <class 'list'>
# <class 'dict'>
數(shù)據(jù)類型的轉(zhuǎn)換int()
、int()
、float()
流程控制
- 單項判斷:if
- 雙向判斷:if…else…
- 多向判斷:if…elif…else…
- if嵌套
# 單項判斷:if
a = 0
if a==0:print('1')
# 雙向判斷:if...else...
if a==0:print('1')
else: print(2)
# 多向判斷:if...elif...else...
if a==1:print('1')
elif a == 0:print(2)
else:print(3)
# if嵌套
score = 60
if score >= 60:print("及格")if(score>=80):print("優(yōu)秀")else:print("還需努力")
else:print("不及格")
格式化輸出
name = 'xixi'
age = 18
height = 166.6
print("name is: %s,age is %d ,height: %1f" % (name, age, height))
print("name is: {},age is {} ,height: {}".format(name, age, height))
循環(huán)與遍歷
邏輯運算符
and
:a and b。類比Java的&&
or
:a or y。類比Java的||
not
:not x。類比Java的!
list遍歷
# range()函數(shù) 默認(rèn)從0開始
for i in range(5):print(i)
#
print("===================")
# range 指定從一開始(左閉右開)
for i in range(1,5):print(i)list_1 = ['xiix1','xi2','xi3','xi4']
# for in
for name in list_1:print(name)
print("while =============")
# while
i=0
while i < len(list_1):print(list_1[i])i += 1
字典dict遍歷
dict_name = {'name':'xixi','age':18,'height':166.6}
for key in dict_name: print('key',key)
print("=================================")
for val in dict_name.values():print('val',val)
print("=================================")
for key,val in dict_name.items():print(key,'--',val)
跳出循環(huán)
- break
- continue
print('break')
name = 'python'
for x in name:if(x == 'h'):break;print(x)
print('continue')
for x in name:if (x == 'h'): continue;print(x)
面向?qū)ο驩OP(封裝、繼承、多態(tài))
封裝:函數(shù)、全局變量與局部變量
"""
函數(shù)代碼塊以def開頭,接標(biāo)識符名稱和(形參)
"""
def add(x,y):print(x,y)return x+yprint(add(1,2))
def none_fun():return
print(none_fun())# 全局變量
a = 10
def inner():# 內(nèi)部變量b = 20print(a)print(b)
inner()
# gloabl 修飾詞:使用global對變量進(jìn)行修飾,告訴計算機(jī)該變量變成全局變量在任何地方都起作用。類似js的vardef func():global aprint('func a1', a)a = 200print('func a2',a)
func()print(a)
函數(shù)的嵌套
"""
函數(shù)的嵌套:一個函數(shù)調(diào)用了另一個函數(shù)
"""
def test1():print('test 1 run')
def test2():print('test 2 run')test1()
test2()
類class
:萬物皆對象
構(gòu)成:類名、屬性(一組數(shù)據(jù))、方法(函數(shù))
創(chuàng)建與調(diào)用:class name
# 創(chuàng)建
class Musician:loveMusic = Truedef sing(self):print('我在唱歌')
# 調(diào)用
clazz = Musician()
clazz.sing()
創(chuàng)建的倆個要素:
- self參數(shù):
- self的作用:會在類的實例化中接受傳入的數(shù)據(jù),在代碼中運行
- 類方法中調(diào)用內(nèi)部屬性或者其他方法時,需要使用self來代表實例
- self屬性智慧在方法創(chuàng)建的時候出現(xiàn),方法調(diào)用時就不需要出現(xiàn)
- 初始化方法(構(gòu)造函數(shù)):
- 定義初始化方法:
def __init__(self)
,init兩邊都是下劃線 __init__()
方法,在創(chuàng)建一個對象的時候被默認(rèn)調(diào)用,不需要手動調(diào)用- 初始化方法中,除了可以設(shè)置固定值外,還可以設(shè)置其他參數(shù)
- 定義初始化方法:
class Hero:def __init__(self,name,hp,atk,aro):# 類方法,用來做變量初始化賦值操作,在實例化的時候會被自動調(diào)用self.name = nameself.hp = hpself.atk = atkself.aro = arodef move(self):print(self.name,'移動...')def attack(self):print(self.name,'攻擊...')print('生命',self.hp)hero = Hero('xixi',10000,50,20)
print(hero)
hero.move()
hero.attack()
類的繼承
class Hero:def __init__(self,name,hp,atk,aro):# 類方法,用來做變量初始化賦值操作,在實例化的時候會被自動調(diào)用self.name = nameself.hp = hpself.atk = atkself.aro = arodef move(self):print(self.name,'移動...')def attack(self):print(self.name,'攻擊...')print('生命',self.hp)
"""
超級英雄繼承英雄類
"""
class SuperHero(Hero):pass
superHero = SuperHero('超級英雄',1000000,5000,2000)
superHero.move()
多重繼承與多層繼承
class human:def humanSay(self):print('我是人類')
class woman(human):def humanSay(self):print('我是女人')def womanSay(self):print('女人')
class man(human):def humanSay(self):print('我是男人')def manSay(self):print('男人')
class p1(man,woman):pass
p1 = p1()
p1.manSay()
p1.womanSay()
p1.humanSay() # 重名的函數(shù)會覆蓋(重寫)父類的方法,先繼承的覆蓋后面的
文件IO
"""
open()
r :只讀
w :寫入
a :追加。存在追加,不存在則創(chuàng)建
rb :二進(jìn)制打開用于只讀
wb :二進(jìn)制打開用于寫入
ab :二進(jìn)制打開用于追加
r+ :打開文件用于讀寫。文件指針在文件開頭
w+ :打開文件用于讀寫。文件存在,則覆蓋。否則新建
a+ :打開文件用于讀寫。文件存在,指針在尾。否則新建。
rb+ :以二進(jìn)制打開文件用于讀寫。文件指針在頭。
wb+ :以二進(jìn)制打開文件用于讀寫。文件存在,則會覆蓋。否則新建。
ab+ :以二進(jìn)制打開文件用于追加。文件存在,指針在尾。否則新建。
"""
# open 讀入
file = open('test.txt','r')
print(file)
# content = file.read()
# print('read',content)
line = file.readline()
line2 = file.readlines()
print('readline',line)
print('readlines',line2)
file.close()# write 寫出
newfile = open('newtest.txt','w')
newfile.write(line)
newfile.close()print("=" * 30)
# with 自動關(guān)閉
with open('test.txt','r') as file:data = file.read()print(data)
import語句
- func.py文件
def add(a,b):return a+b
from hello.helloEnd import funcres = func.add(1,2)
print(res)
time函數(shù)
import time
start_time = time.time()
print(start_time)
local_time = time.localtime()
print(local_time)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
csv模塊讀寫
讀取
import csv
with open('test.csv','r') as file:reader = csv.reader(file)print(reader)for content in reader:print(content)
寫出
with open('test.csv','a') as file2:writer = csv.writer(file2)writer.writerow(['xixi2',22,'boy'])