1. 程式人生 > >帶著問題學 python

帶著問題學 python

爬蟲框架還是 python 專業啊,一直在用 java, 現在決定嚐嚐鮮,先學 python,再學資料採集,爬蟲框架。

okay,帶著問題,先從 python 開始學起。

1. python 如何引用其他的檔案?

python 是以模組的形式匯入其他檔案的。

什麼是模組?模組就是包含一組相關函式的檔案。

先建立一個 moduletest 檔案

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'a moule test example 這裡是模組的文件註釋,任何模組的 first string 就被當做是模組的文件註釋'

# 這裡 __author__ 是表示作者,當公開原始碼後別人就可以看到你的名字
__author__ = 'reycg' # 定義一個方法 def test(): print('hello') # 當在命令列中執行該模組檔案時, # python 直譯器就會把一個特殊變數 __name__ 設定為 __main__, # 如果在其他地方匯入 if 判斷就會失敗。這種 if 測試的常見用途就是單元測試. if __name__=='__main__': test()

在一個新 python 檔案中呼叫這個模組。

1. 先使用 import 將模組匯入

2. 通過指定模組名稱和函式命令,中間中句點(.)的方式呼叫它

import moduletest

moduletest.test()

執行該檔案成功的得到 hello 輸出,完美~

2. python 的各種規範

  1. 變數命名:以字母開頭,單詞之間使用下劃線分隔,如 test_item
  2. 指令碼名稱:以 .py 結尾
  3. 註釋:以 # 號開頭
  4. 字串儘量使用單引號包含,只有特殊情況(如文字中又包含引號)的情況下才使用雙引號

3. 如何新增一個新函式?

# 定義一個函式
# def 是關鍵字,接下來就是函式的定義
# 第一行是函式頭,後面是函式體
def test():
  print('hello') # 從這行開始是函式體,函式體應該整體縮排一級
  print('world')

 4. 字串有哪些有用的方法?

 下面只是 python string 的部分方法介紹,完整方法可參見 https://docs.python.org/3.6/library/stdtypes.html#string-methods

# 字串就是一個序列,也就是由其他值組成的有序集合

# 這裡可以把 fruit 看做是一個 java 陣列
fruit='apple'
print(fruit[0])


# 獲取字串的長度
print(len('banana'))


# 對字串遍歷,有兩種, 推薦使用 for 這種
for letter in 'banana':
  print(letter) # 此處別忘了縮排

vegetable = 'tomato'
index = 0
while index < len(vegetable):
  letter = vegetable[index]
  print(letter)
  index += 1

# 和 java 一樣,字串是不可變的
# test_str = 'lalala'
# test_str[0] = 'o'
# 上面資訊會報錯,錯誤資訊如下 
# TypeError: 'str' object does not support item assignment

# 對字串分割
split_str = 'a-b-c-d'
print(split_str.split('-'))

# 拼接字串
join_str_list = ['a', 'b', 'c', 'd']
print('-'.join(join_str_list)) # 這裡就是用 - 拼接後的值

# 檢視子字串是否包含在字串中
child_str = 'abc'
print('abcd'.find(child_str)) # 如果存在就返回首字母下標,不存在返回 -

 5. python 如何讀寫檔案?

# 當讀取檔案或寫入檔案時,預設會在當前目錄尋找它

# 寫入檔案
# 使用 w 模式來開啟, 如果檔案已經存在
# 會將檔案內的舊資料清除掉,並重新開始寫入
fout = open('output.txt', 'w') 

testline = 'this is a test line'
charLength = fout.write(testline) # 返回值是寫入的字元數量
print(charLength)

# 寫入的引數必須是字串才可以
x = 123
fout.write(str(x))
fout.close() # 寫入後應該關閉檔案,如果不關閉問,只能在程式執行結束的時候關閉


# 讀取檔案
fread = open('output.txt', 'r') # 使用 r 模式開啟,只能讀取檔案
print(fread.read())
fread.close()

 5. python 如何處理 json

# 匯入 json 庫
import json

# json.dumps
# 將 python 物件編碼成 json 字串
modelDict = {
  'name': '大眾朗逸',
  'brandName' : '大眾',
  'id': 1
}

outputModelJson = json.dumps(modelDict, ensure_ascii=False)
print('dumps model dict' + outputModelJson)
# 寫入 model.json 檔案
fout=open('model.json', 'w', encoding='UTF-8')
fout.write(outputModelJson)
fout.close()


# json.loads 將已編碼的 json 字串解碼為 python 物件
finput=open('model.json', 'r', encoding='UTF-8')
inputModelJson = finput.read()
inputModel = json.loads(inputModelJson)
print(inputModel['name'])