Python的基础知识,不同于其他编程语言
1.字符串拼接可以不使用+号
name = "this " "is " "a " "string"
2.使用''' ‘’‘ / “”“ ”“”可以实现多行字符串
name = """da's'd'sa'da
adsasda
a'd's'da'da “”“
3.可以同时赋值多变量
a,b = 0,1
4.数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符
5.如果你不想让反斜杠发生转义,可以在字符串前面添加一个r,表示原始字符串:
>>> print('C:\some\name') C:\some ame >>> print(r'C:\some\name') C:\some\name
6.在每行最后一个字符后使用反斜线来说明下一行是上一行逻辑上的延续
aa = '123'\
'456'
print(aa)
7.若局部变量与全局变量同名,则在函数内中优先使用局部变量,并且局部变量的值改变不会影响全局变量,除非局部变量增加global关键字,则直接使用的是全局变量
8.字典的遍历
for k,v in dic.items():
print(k,v)
9.重写父类的方法,不需要其他标识,只需在子类中定义与父类同名的方法即可
多重继承:class Dog(Animal,AA) 同时继承Animal和AA类
10.python获取本机ip(Linux)
import psutil
def get_netcard():
netcard_info = []
info = psutil.net_if_addrs()
for k,v in info.items():
for item in v:
if item[0] == 2 and not item[1]=='127.0.0.1' and item[1].startswith('192'):
netcard_info.append(item[1])
return netcard_info
11.出现模块未找到的解决办法
p = os.path.dirname(os.path.dirname((os.path.abspath(__file__))))
if p not in sys.path:
sys.path.append(p)
12.python判断字符串、集合、数组、字典是否为空
if not variable_name:
#如果不为空
print('不为空')
13.列表推导式
for循环的简写,一个for循环,然后前面定义一个变量进行变量的保存
my_list = [value for value in range(0,5)]
14.global的使用
当需要改变内存地址的时候,使用global,当不需要改变内存地址的时候,不需要使用global
例如:
s1 = [1,2,3]
def change():
#引用类型修改不需要改变内存地址
s1.append(4)
print(s1)
# 1,2,3,4
s1 = 1
def change():
#基本数据类型修改需要改变内存地址
global s1
s1 = 2
print(s1)
#2
15.语法糖的使用
定义一个记录日志的语法糖函数 解释:先定义一个装饰器的函数log,当编译器发现函数有装饰器后,将该函数传入装饰器函数中,获得装饰器函数返回的新函数,然后执行新函数,将参数传入,若要获得返回值,则在
inner函数里写return值
def log(func):
def inner():
print('调用函数的时间')
func()
return inner
用法
@log
def sum(a,b):
result = a+b
print(result)
sum(1,2)
#调用函数的时间
#3
16.python 单例设计模式
class Animal(object): __instance = None def __new__(cls, *args, **kwargs): if cls.__instance: return cls.__instance else: cls.__instance = object.__new__(cls) return cls.__instance a1 = Animal() a2 = Animal() print(id(a1)) print(id(a2))
17.python 指定特定属性,不允许动态新增属性
class Animal(object):
# 定义该类型只有这2个属性
__slots__ = ('name','age')
18. __all__的使用
__all__ 一般用于当使用 from 包/模块 import * 的时候产生作用
如果在模块中A顶部定义了__all__=['function_name']
则其他模块中from A import *,则只会导入__all__中定义的function_name
如果是包,则__all__需要定义在__init__.py文件中
项目结构
model
--__init__.py
--first_model.py
--second_model.py
outside_model.py
如果outside_model.py中使用from包名,import *不会导入包里所有的模块
需要使用__all__指定导入的模块,在__init__.py中定义
__all__ = ['first_model','second_model']
19.可迭代对象
for循环可以直接遍历取值的对象:列表、元祖、字符串、集合、range
判断对象是否是可迭代对象
from collections import Iterable
result = isinstance([1,2],Iterable)
返回True,就是可迭代对象
20.python获取各个目录的办法
import os, sys print('__file__:', __file__) print('realpath of __file__:', os.path.realpath(__file__)) print('sys.executable:', sys.executable) print('realpath of sys.executable:', os.path.realpath(sys.executable)) print('sys.argv[0]:', sys.argv[0]) print('realpath of sys.argv[0]:', os.path.realpath(sys.argv[0])) print('sys.path[0]:', sys.path[0]) print('realpath of sys.path[0]:', os.path.realpath(sys.path[0]))