文章目录
- 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
使得类的实例可调用
扫描二维码关注公众号,回复:
8871573 查看本文章
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)
未完待续。。。。。