a = ("liuchuanfeng", "cangjingkong")
b = (20,18)
# print(dict(zip(a,b)))
# 元组
# a = (1,2,3,[4,5,6,7],8)
# a[3] = 2
# print(a) 报错
# 列表
a = (1,2,3,[4,5,6,7],8)
a[3][2] = 2
# print(a)
# sort() 是可变对象列表(list)的方法,无参数,无返回值,sort() 会改变可变对象.
dict1 = {'songjianguo':1, 'liuleqian':2}
list1 = [2, 1, 3]
# print(list1.sort())
# print(list1)
dict1 = {'songjianguo':1, 'liuleqian':2}
list1 = [2, 1, 3]
# print(sorted(dict1))
# print(sorted(list1))
# GIL 是 Python 的全局解释器锁,同一进程中假如有多个线程运行,
# 一个线程在运行 Python 程序的时候会占用 Python 解释器(加了一把锁即 GIL),
# 使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。
# 如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。
# 所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
list1 = [{'name':'liuleqian', 'age':20},
{'name':'songjianguo', 'age':22},
{'name':'qinyeyang', 'age':24}]
sorted(list1, key = lambda x : x['age'])
# print(list1)
# all如果存在0,Null,False 返回False,否则返回True
# any如果都是0,None,False,Null 时,返回 True。
# print(all([1, 2, 3, 0]))
# print(all([1, 2, 3]))
# print(any([1, 2, 3, 0]))
# print(any([0, None, False]))
def reverse( x):
"""
:type x: int
:rtype: int
"""
num = 0
if x == 0:
return 0
if x < 0:
x = -x
while x != 0:
num = num*10 + x%10
x = x//10
num = -num
else:
while x != 0:
num = num*10 + x%10
x = x//10
if num>pow(2,31)-1 or num < pow(-2,31):
return 0
return num
# print(reverse(-261))
# 一、内部函数
def outer():
def inner():
x = 10
# 二、闭包
# 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,
# 那么内部函数就被认为是闭包(closure)。
n = 'hello'
def outer(arg):
def inner():
arg
return inner
f = outer(n)
# 三、装饰器
# 装饰器是一种特殊的闭包,就是在闭包的基础上传递了一个函数,
# 然后覆盖原来函数的执行入口,以后调用这个函数的时候,就可以额外实现一些功能了
def outer(arg):
def inner():
print("*" * 20)
arg()
print("*" * 20)
return inner
@outer # echo = outer(echo) # inner
def echo():
print('刘乐骞NB!')
# echo()
def fib(n):
if n == 0:
return False
if not isinstance(n, int) or (abs(n) != n):
return False
if n <= 1:
return n
return fib(n-1)+ fib(n-2)
# print([fib(i) for i in range(1, 11)])
import re
str1 = 'li‵‵‵uleqian songjianguo: qinyeyang'
result = re.split(r":| ", str1)
# print(result)
# yield 是用来生成迭代器的语法,在函数中,如果包含了 yield,那么这个函数就是一个迭代器。
# 当代码执行至 yield 时,就会中断代码执行,直到程序调用 next() 函数时,才会在上次 yield 的地方继续执行
def foryield():
print("start test yield")
while True:
result = yield 5
print("result:", result)
g = foryield()
# print(next(g))
# print("*"*20)
# print(next(g))
# 一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,
# 同时获取所有的类成员(属性和方法)。
# 支持的类型:
# 1.单继承- 一个子类类继承自单个基类
# 2.多重继承- 一个子类继承自多个基类
# 3.多级继承- 一个子类继承自一个基类,而基类继承自另一个基类
# 4.分层继承- 多个子类继承自同一个基类
# 5.混合继承- 两种或两种以上继承类型的组合
# //:向下取整
# %:取模
# **:幂运算
# 基本语法
# try:
# 被检测的代码块
# except 异常类型:
# try中一旦检测到异常,就执行这个位置的逻辑
# eg:
# def func(arg):
# try:
# arg +=1
# except TypeError as e:
# print(e)
# func('光哥')
# 主动触发异常
# try:
# raise TypeError('类型错误')
# except Exception as e:
# print(e)
from collections import Counter
str1 = "ahdbgdhsjidhihisfjbaj"
# print(Counter(str1))
python面试基础知识(一)
python面试基础知识(三) Django部分