python基础学习笔记。语法、函数等。
基础
定义utf-8文件头
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
2.循环
// name是值 names是数组
// 第一种写法
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
// 第二种写法
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
print(x)
3.内置字典
dict
//定义一个dict
d = {'xiaoming': 95, 'xiaohong': 76}
// 像php数组一样的方式 通过下标获取值
print(d['xiaohong'])
// 通过get获取下标对应的值 get两个参数 第一个参数key 第二个参数为key不存在时的默认值
score = d.get('1');
if (score == None):
print('key不存在')
score = d.get('1', 1);
print(score);
d.pop('xiaohong') // 根据key删除一个元素
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
set
# 创建一个set 必须使用list作为输入集合
s = set([1, 2, 3])
print(s)
# add增加一个key
s.add('s')
print(s)
# remove删除一个key
s.remove(1);
print(s)
# & 获取两个set交集
s2 = set([3, 2, 5])
mix = s & s2
print(mix)
函数
使用函数
# 函数使用
a = abs(-1)
print(a)
# 函数可以复制给一个变量 相当于函数的别名
a = abs
print(a(1.22))
自定义函数
# 定义一个函数
# 1. 自定义函数用def
# 2. 函数与括号之间无需空格
# 3. 表达式无需空
def my_max(x, y):
# 校验参数
if not isinstance(x, (int, float)):
# 抛出错误
raise TypeError('params error')
if x > y:
return x
return y
print(my_max(1,2))
# 返回多个值
def return_mulit_val(x, y):
return x,y
x, y = return_mulit_val(1,2)
print(x)
print(y)
可变参数
# 定义可变参数
# 参数前加*为可变参数 参数数量不规定 内部会当做一个tuple
def my_Variable(*numbers):
print(numbers)
sum = 0
for number in numbers:
sum = sum + number * number
return sum;
print('---------------------')
print(my_Variable(1, 2, 2, 3, 4))
# 结果
---------------------
(2, 3, 4)
29
numbers = [1, 2, 3]
print('---------------------')
print(my_Variable1(*numbers)) // numbers元素每个参数作为参数传递
#结果
---------------------
(1, 2, 3)
14
切分[x:y]
arr = [1, 2, 3, 4, 5]
tuple = (6, 7, 8, 9, 10)
print(arr[:3])
print(tuple[:4])
# 实现trim
def trim(str, limit = ' '):
if str == '':
return str
left = str[0]
right = str[-1:]
if left == limit:
str = str[1:]
if right == limit:
# -1倒数第一个元素的索引
str = str[:-1]
return str
print(trim(' str '));
迭代
# 引入collections模块
from collections import Iterable
# 通过Iterable类型判断变量是否可迭代
# isinstance判断对象类型
res = isinstance([1, 2], Iterable)
print(res)
# enumerate函数把list变成键值对
for x,y in enumerate([1, 2, 3]):
print(x, y)
列表生成式
# 列表生成式
print(list(range(2, 12)))
# 结果
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
lista= [x * x for x in range(1, 10)]
print(lista)
# 结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
加锁释放锁
# 引入锁
from twisted.internet.defer import DeferredLock
lock = DeferredLock()
# 加锁
lock.acquire()
# 释放锁
lock.release()
三元运算符
# 如果str有值 返回str.strip 否则返回 ''
return str.strip() if str else ''
日期时间戳转换
import time,datetime
# 当前时间
print(time.time())
datetime_str = '2020-01-02 11:11:11'
time_array = time.strptime(datetime_str, '%Y-%m-%d %H:%M:%S')
# 日期转换为时间戳
timestamp = int(time.mktime(time_array))
print(timestamp)
join
query_string = '&' . join('%s=%s' % (k, v) for k,v in dict.items())