python基础篇
- 整数int
加 print(3+8)
减 print(3-8)
乘 print(3*8)
除 print(3/8)
取整除 - 返回商的整数部分(向下取整)print(17//3)
取模 - 返回除法的余数 print(17%3)
幂,0.5次方就是开方 print(8**0.5)
向下取整数 print(int(0.5))
求绝对值 print(abs(-1))
将一个整数转换为一个十六进制字符串 print(hex(13))
将一个整数转换为一个八进制字符串 print(oct(13))
将一个整数转换为一个二进制字符串 print(bin(13))
print(bin(13))
001101
print(bin(60))
111100
print(13&60)
print(13|60)
print(13^60)
- str 字符串
for ch in my_str4:
print(ch, end=' ')
content = input('请输入内容:')
if content.isalpha():
print('全部都是字母!')
if content.isdecimal():
print('其中包含数字!')
if content.isdigit():
print('输入的内容是数字!')
if content.islower():
print('全是小写')
if content.startswith('ab'):
print('字符串以ab开头')
my_str = 'abcdefghijcdklmn'
my_str.find('cd')
my_str.rfind('cd')
my_str.index('cd')
my_str.rindex('cd')
my_str.replace('cd', '888')
my_str = 'abcdghiefghijcdklmn'
print(my_str.partition('ghi'))
my_str = 'aaa bbb ccc ddd'
my_str_list = my_str.split(' ')
print(my_str_list)
txt = "Google#Runoob#Taobao#Facebook"
x = txt.split("#,1")
print(x)
my_list = ['obama', 'john', 'smith', 'polly']
print('#'.join(my_list))
my_str = 'aaa\nbb\nccc'
print(my_str.splitlines())
string.lower() 返回新字符串,转换 string 中所有大写字符为小写
string.upper() 返回新字符串,转换 string 中的小写字母为大写
string.ljust(width) 返回新字符串,基于原字符串左对齐,并使用空格填充至长度 width
string.rjust(width) 返回新字符串,基于原字符串右对齐,并使用空格填充至长度 width
string.center(width) 返回新字符串,基于原字符串居中,并使用空格填充至长度 width
string.lstrip() 返回新字符串,截掉 string 左边(开始)的空白字符
string.rstrip() 返回新字符串,截掉 string 右边(末尾)的空白字符
my_str1 = 'abc'
my_str2 = 'ABC'
print(my_str1.upper())
print(my_str2.lower())
my_str3 = ' abc '
print(my_str3.lstrip())
print(my_str3.rstrip())
print(my_str3.strip())
my_str4 = 'abcd'
new_string = my_str4.ljust(20)
new_string = my_str4.rjust(20)
new_string = my_str4.center(20)
print(new_string)
my_str = 'abcdefg'
print(my_str[1])
print(my_str[1: 5])
print(my_str[3:7])
print(my_str[-1])
print('AAA:', my_str[::])
print(my_str[::-1])
- list 列表
my_list.append(777)
my_list.insert(1, '888')
my_list.extend(my_list2)
del my_list[1]
my_list.remove(40)
my_list.pop()
my_list.clear()
my_list.index(3)
my_list.count(2)
max(my_list)
min(my_list)
my_list.sort()
my_list.sort(reverse=True)
sorted(my_list)
my_list.reverse()
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print i, element
- set 集合
1. 字典是键值对,键值不能重复
2. 集合值, 值不能重复
3. 集合也是无序的, 也就是相当于没有下标 没有索引
4. 集合一般用来去重
my_set = {10, 20, 30, 10, 20, 20, 20}
print(my_set, type(my_set))
- tuple 元组操作
my_tuple = (10, 20, 30, 40)
print(my_tuple[0], my_tuple[1], my_tuple[2])
my_tuple = (10,)
print(type(my_tuple))
my_tuple = (10, 20)
a, b = my_tuple
print(a, b)
- dict 字典
my_dict = {'name': 'Obama', 'age': 48, 'gender': '女',}
my_dict['name']
my_dict[0]
my_dict = {'name': 'Obama', 'age': 48, 'gender': '女'}
my_dict['name'] = 'Trump'
my_dict.pop('gender')
my_dict.clear()
my_dict.setdefault('age', 18)
my_dict2 = {'name': 'Obama', 'age': 10, 'gender': '女', 'attack': 100}
my_dict.update(my_dict2)
my_dict = {'name': 'Obama', 'age': 48, 'gender': '女'}
print(my_dict.get('name', 'abc'))
print('打印所有的key:', my_dict.keys())
print('打印所有的value:', my_dict.values())
print('打印所有的key-value:', my_dict.items())
for key, value in my_dict.items():
print(key, value)
for item in my_dict.items():
print(item[0], item[1])
- def 函数
def my_function():
"""这是我的第一个函数"""
for i in range(1, 7):
for j in range(1, i + 1):
print('%d * %d = %d' % (i, j, i * j), end='\t')
my_function()
print('打印九九乘法表!')
my_function()
def my_func():
print('aaa')
return
print('bbb')
ret = my_func()
print(ret)
def my_func03():
global global_param
global_param = 500
print(global_param)
my_func03()
print(global_param)
def my_plus(a=0, b=0, c=0):
return a + b + c
ret = my_plus(10, 20, 30)
print(ret)
ret = my_plus(10)
print(ret)
ret = my_plus(10, 100)
print(ret)
- class 类
1. 封装的本质是将事物相关的属性和方法封装在一个类里面,我们调用类创建实例的时候,不用关心类内部的代码细节,相当于一个黑箱子,我们只需要该实例(黑箱)能给出我们想要的结果就好了。
2. 子类可以复用父类里面的属性或者方法,当然子类还可以提供自己的属性和方法
3. 使用类的继承实现约束子类中必须要实现某个方法,否则就会报错
class BasePlugin(object):
"""
基类,用于做约束。约束子类中必须实现process方法。
"""
def process(self):
raise NotImplementedError("%s中必须实现process方法" %self.__class__.__name__)
class DiskPlugin(BasePlugin):
pass
class MemoryPlugin(BasePlugin):
pass
obj = MemoryPlugin()
obj.process()
4. ● 实例方法:由对象调用;至少一个self参数;执行实例方法时,自动将调用该方法的对象赋值给self;
● 类方法:由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类赋值给cls;
● 静态方法:由类调用;无默认参数
class Foo(object):
def __init__(self, name):
self.name = name
def ord_func(self):
""" 定义实例方法,至少有一个self参数 """
print('实例方法')
@classmethod
def class_func(cls):
""" 定义类方法,至少有一个cls参数 """
print('类方法')
@staticmethod
def static_func():
""" 定义静态方法 ,无默认参数"""
print('静态方法')
f = Foo("中国")
f.ord_func()
Foo.class_func()
Foo.static_func()
5. 装饰器本质上是一个函数或类,它可以让其他函数在不需要修改任何代码的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。可以理解为面向切面编程,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。
def print_msg():
msg = "I'm closure"
def printer():
print(msg)
return printer
closure = print_msg()
closure()
from time import ctime, sleep
def timefun(func):
def wrapped_func(a, b):
print("%s called at %s" % (func.__name__, ctime()))
print(a, b)
func(a, b)
return wrapped_func
@timefun
def foo(a, b): <--这里带参数
print(a+b)
foo(3, 5)
@classmethod(类方法)
class A:
class_attr = "attr"
def __init__(self):
pass
@classmethod
def class_foo(cls):
print("log is enabled")
A.class_foo()
class A:
class_attr = "attr"
def __init__(self):
pass
@staticmethod
def static_foo():
if log_enabled:
print("log is enabled")
A.static_foo()
class DataSet(object):
def __init__(self):
self._images = 1
self._labels = 2
@property
def images(self):
return self._images
@property
def labels(self):
return self._labels
l = DataSet()
print(l.images)
print(l.labels)
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__div__: 除运算
__mod__: 求余运算
__pow__: 幂
1. __doc__
● 表示类的描述信息,Python自建,无需自定义。
class Foo:
""" 描述类信息,这是用于看片的神奇 """
def func(self):
pass
print(Foo.__doc__)
2. __module__ 和 __class__
● __module__ 表示当前操作的对象在那个模块
● __class__ 表示当前操作的对象属于哪个类
test.py
class Person(object):
def __init__(self):
self.name = 'laowang'
main.py
from test import Person
obj = Person()
print(obj.__module__)
print(obj.__class__)
3.__init__ 和 __new__
● new是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象
● init是初始化方法,通过类创建对象时,自动触发执行
● 只有在new返回一个cls的实例时后面的init才能被调用
● 当创建一个新实例时调用new,初始化一个实例时用init
class Cat:
def __new__(cls, name):
print("创建对象")
return object.__new__(cls)
def __init__(self, name):
print("对象初始化")
self.name = name
def __str__(self):
return "%s" % self.name
lanmao = Cat("蓝猫")
lanmao.age = 20
print(lanmao)
- 数据相互转换
列表==>字典
dict1 = {}
def demo():
a = ["name" , "age" , "sex"]
b = ["xiaoming" , 18]
for i in range(len(a)):
try:
dict1[a[i]] = b[i]
except:
pass
print(dict1)
demo()
a = ["name", "age"]
b = ["xiaoming", 18]
c = dict(zip(a,b))
print(c)
dict1 = {'name': 'xiaoming', 'age': 18}
list1 = list(dict1.keys())
list2 = list(dict1.values())
print(list1,list2)
import json
msg = "{'name': 'CP', 'id': '', 'pageno': 1}"
dic = json.loads(msg)