文章目錄
- 1. 簡單介紹一下Python這門語言
- 2. python 解釋器種類以及相關特點
- 3. pep8編碼規範
- 4. python 中的基本數據類型
- 5. 可變類型與不可變類型
- 6. 將"hello world"轉換爲首字母大寫"Hello World"
- 7. 如何檢測字符串中只含有數字
- 8. 反轉字符串
- 9. 如何將gbk編碼轉爲utf-8編碼
- 10. 正則切分字符串
- 11. 找出兩個列表的相同元素和不同元素
- 12. 字典排序
- 13. 讀取文件的3個方法read()、readline()、readlines()區別
- 14. 如果當前的日期爲 20190530,要求寫一個函數輸出 N 天后的日期,(比如 N 爲 2,則輸出 20190601)
- 15. 一行代碼輸出 1-100 之間的所有偶數。
- 16. 魔法函數 __call__
- 17. @classmethod 和@staticmethod 用法和區別
- 18. Python裏的反射
1. 簡單介紹一下Python這門語言
Python是一門解釋性語言,運行的時候一行一行解釋並運行,方便調試,開發效率高;有豐富的第三方庫,幾乎涵蓋所有領域; 運行速度相較於c/c++ 會慢一些;Python是一門腳本語言,可以很方便的調用第三方接口,當然也包括其他語言的接口
2. python 解釋器種類以及相關特點
- CPython:c語言開發的,使用最廣的解釋器
- IPython: 基於cpython之上的一個交互式計時器 交互方式增強 功能和cpython一樣
- JPython: 運行在Java上的解釋器 直接把python代碼編譯成Java字節碼執行
3. pep8編碼規範
4. python 中的基本數據類型
數字,布爾,字符,列表,元祖,字典,集合
5. 可變類型與不可變類型
可變類型:list dict set
不可變:number string tuple
6. 將"hello world"轉換爲首字母大寫"Hello World"
7. 如何檢測字符串中只含有數字
s = '1233sasd33'
# 只含有數字返回True,否則返回false
s.isdigit()
8. 反轉字符串
s = 'hello'
print(s[::-1])
9. 如何將gbk編碼轉爲utf-8編碼
先通過gbk解碼,然後通過utf-8編碼即可
s = '你好'
print(s.encode('gbk').decode('gbk').encode('utf-8'))
10. 正則切分字符串
s="name:python java" ==> ['name', 'python', 'java']
import re
s="name:python java"
resp = re.split('[:| ]', s)
print(resp)
11. 找出兩個列表的相同元素和不同元素
li1 = [1,2,3]
li2 = [3,4,5]
# 交集(相同元素)
print(set(li1) & set(li2))
# 對稱差(不同元素)
print(set(li1) ^ set(li2))
12. 字典排序
d1 = [
{'name':'alice', 'age':38},
{'name':'bob', 'age':18},
{'name':'Carl', 'age':28},
]
d2 = sorted(d1, key=lambda x:x['age'])
print(d2)
>>> [{'name': 'bob', 'age': 18}, {'name': 'Carl', 'age': 28}, {'name': 'alice', 'age': 38}]
13. 讀取文件的3個方法read()、readline()、readlines()區別
read():讀取整個文件,返回一個字符串對象
readline(): 一行一行讀取,返回字符類型
readlines():讀取整個文件,返回一個列表
14. 如果當前的日期爲 20190530,要求寫一個函數輸出 N 天后的日期,(比如 N 爲 2,則輸出 20190601)
# 先轉爲時間對象,然後加上天數,最後再轉爲字符類型
import datetime
def get_date(N):
detester = '20190530'
# 轉日期
date = datetime.datetime.strptime(detester,'%Y%m%d')
# 日期相加
date = date + datetime.timedelta(days=N)
# 轉字符
date = date.strftime('%Y%m%d')
print('當前日期爲{}, {}天后的日期是{}'.format(detester, N, date))
get_date(3)
15. 一行代碼輸出 1-100 之間的所有偶數。
[i for i in range(1,101) if i % 2 == 0]
16. 魔法函數 call
使得類的實例可調用
class Spider(object):
def __init__(self):
pass
def get_data(self):
print('spider is running...')
def __call__(self, *args, **kwargs):
self.get_data()
if __name__ == '__main__':
Spider()()
17. @classmethod 和@staticmethod 用法和區別
使用@classmethod 和@staticmethod 後,類可以不需要實例化,直接通過類名.方法名()來調用
- @staticmethod不需要表示自身對象的self和自身類的cls參數,就跟使用函數一樣。
- @classmethod也不需要self參數,但第一個參數需要是表示自身類的cls參數。
- 如果在@staticmethod中要調用到這個類的一些屬性方法,只能直接類名.屬性名或類名.方法名。
- 而@classmethod因爲持有cls參數,可以來調用類的屬性,類的方法,實例化對象等,避免硬編碼。
class Spider(object):
num = 1
def __init__(self):
pass
@staticmethod
def get_data():
print(Spider.num,'========================')
print('spider is running...')
@classmethod
def download(cls):
print(cls.num, '======================')
print('downloading is running.......')
if __name__ == '__main__':
Spider.get_data()
Spider.download()
18. Python裏的反射
用於操作未知的方法或變量,這種機制稱爲反射
- hasattr:判斷對象中是否有這個方法或變量
- getattr:獲取對象或方法中的內存地址
- setattr:爲對象添加方法或變量
- delattr:刪除對象中的變量,不能用於刪除方法
class Spider(object):
def __init__(self):
self.url = 'http://www.baidu.com'
def get_data(self):
print('Spider is running.......')
if __name__ == '__main__':
s = Spider()
# 判斷對象中是否有這個方法或變量,有返回True,沒有返回false
print(hasattr(s, 'get_data')) # true
# 獲取對象中的變量或方法的內存地址, 三個參數,第三個爲默認值,如果變量名不存在就返回第三個,存在就返回存在的
print(getattr(s, 'url', 'not found'))
# 添加一個name,賦值爲gkl
setattr(s, 'name', 'gkl')
print(s.name)
# 刪除name屬性
delattr(s, 'name')
print(s.name)
未完待續。。。。。