1.三目运算 三元运算
name = ‘alex‘ if 1>1 else ‘eric‘
print (name)
2.深浅拷贝copy deepcopy
# str 一次性创建,不能被修改,只要修改,再创建
# list 链表,下一个元素的位置,上一个元素的位置
str,数字:赋值/浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址,
#拷贝,赋值:地址都一样
import copy
n1 = 123
n2 = copy.copy(n1)
id(n1)
id(n2)
n2 = copy.deepcopy(n1)
id(n1)
id(n2)
列表/字典/元素......
深拷贝:在内存中将所有的数据重新创建一份(除了最底一层,上层都拷贝一份,即:python内部对字符串和数字的
优化)
浅拷贝:只把最外层拷贝了一份,里面指向同一个地址
3.函数
面向过程编程:根据业务逻辑从上到下实现功能,往往用一长段代码来实现指定功能
函数式编程:
a.def 定义函数的关键字
1.def 函数名(形参1, 形参2, 形参3):
函数体
return "123"
2.执行函数
函数名(实参1, 实参2, 实参3)
3.形参,实参(默认按照顺序赋值),
4.指定形参传入实参时,可以不按照顺序
5.函数可以有默认参数(有默认值的参数一定要放在参数的尾部)
def drive(p, name="张"):
temp = name + "开车去" + p
return temp
ret = drive("海南")
print (ret)
6.动态参数
*,元组,元组的元素
**,字典
结合
def f1(*args, **kwargs)
7.为动态参数传入列表/字典/元组
*args, *列表
**kwargs, **字典
-----------------------
def f1(*a):
print (a, type(a))
f1(123,456, [11, 22, 33], {"k1":"21"})
(123, 456, [11, 22, 33], {‘k1‘: ‘21‘}) <class ‘tuple‘>
-----------------------
def f1(**a):
print (a, type(a))
f1(k1=123, k2=456)
{‘k2‘: 456, ‘k1‘: 123} <class ‘dict‘>
万能参数
------------------------
def f1(p, *a, **aa):
print (p, type(p))
print (a, type(a))
print (aa, type(aa))
f1(11, 22, 33, k1=123, k2=456)
11 <class ‘int‘>
(22, 33) <class ‘tuple‘>
{‘k2‘: 456, ‘k1‘: 123} <class ‘dict‘>
b.函数返回值:默认返回None eg:如果成功了,返回一个值,如果失败了,返回另一个值
return return执行后,函数内下面的代码均不再执行
c.参数:
#p:形式参数
def kuaidi(p):
#取快递
if p =="13500098853":
return True
else:
return False
#实际参数
r1 = kuaidi(‘13500098853‘)
r2 = kuaidi(‘123‘)
if r2:
print ("成功")
else:
print ("失败")
--------------------------------
8.全局变量/局部变量
#全局变量
PERSON = "alex"
def func1():
#局部变量
a = 123
global PERSON
PERSON = "eric"
print (a)
def fun2():
#局部变量
a = 456
print (PERSON)
print (a)
func1()
fun2()
###########
123
eric
456