一、字符串的比较
1、Is:两个对象的内存地址,查看内存地址的方法是id()
A=1
B=1
Print(id(A))
Print(id(B))
If A is B:
Print(‘A and B 内存地址是一样的’)
2、In:包含
Str1=”abc”
Str2=”a”
If str2 in str1:
Print(“str1包含str2”)
Else:
Print(“str1不包含str2”)
3、==:类型及内容一致
A=1
B=“1”
If A ==int(B):
Print(“ok”)
Lese:
Pringt(“不ok”)
二、数据结构实战
1、OrderedDict 实现字典的有序
字典是⽆序,有时候为了特殊的需求,需要实现字典的有序,那么可以使⽤collections模块⾥⾯的OrderedDict,它的实现思想就是先加⼊进来的,就排序在第⼀位
from collections import OrderedDict
data=OrderedDict()
data['name']='刘晓东'
data['age']=18
data['sex']='boy'
print(dict(data))
2、元素的分解,分解成N个对象language*company
list1=['Python','Google','华为','阿里','百度','腾讯']
print(list1[1:])
language,*company=list1
print(language)
print(company)
3、字典的查找
#字典的查找
dictX={'x':1,'y':2,'z':3}
dictY={'w':10,'x':11,'y':2}
#查找相同
print(set(dictX.keys())&set(dictY.keys()))
print(set(dictX.values())&set(dictY.values()))
#查找不同
print(set(dictX.keys())-set(dictY.keys()))
print(set(dictX.values())-set(dictY.values()))
三、python函数
(一)、意思
所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地⽅,以后可以⼀直的进⾏调⽤,这样就可以解决 多次重复来编写。
(二)、函数的定义(函数定义了以后必须调用,否则将毫无意义)
Def func()
函数体
(三)、形式参数:
定义函数的时候,()里面的叫形式参数,比如函数sum(a,b),
那么可以说sum函数的形式参数是a和b,它的价值是函数在函数体内编写函数的实现部分,那么形式参数的就是实现部分的一部分
(四)、实际参数:
当一个函数调用的时候,给形式参数赋予的实际的值叫实际参数
举例:
def login(username,password):
'''
:param username: 登录账户信息
:param passward: 登录账户的密码
:return:
'''
if username=='无涯' and password=='admin':
print('login success')
else:
print('login fail')
login(username='无涯',password='admin')
(五)、默认参数:
定义函数的时候,会给形式参数一个默认的值,如果调用函数的时候,
给这个形式参数没有赋予值,就使用默认参数,如果赋予新的值,就使用新的值
注意:形式参数没有值的不能放在默认参数的后⾯,否则程序就会报具体的
错误信息
(六)、动态参数
1、定义
当一个函数形式参数个数不确定,数据类型不确定的时候,使用动态参数
*:代表的是元组
**:代表的是字典
当赋值的时候,默认会给到元组,所以如果需要给字典赋值的,就在前方加上**,那么此时的值就会赋到字典内
def func(*args,**kwargs):
print(args,kwargs)
print(type(args),type(kwargs))
func((1,2,3),('a','b','c'),**{'name':'wuya'})
2、实战
(只需要写一个函数,需要测试什么数据就在func中添加调用即可)
def func(**kwargs):
print(kwargs)
func(name='wuya',age=18)
func(name='wuya',agr=18,sex='boy')
(七)、函数的返回值
1、含义
在单个函数而言,有没有返回值其实没有多大意义,函数的返回值核心思想是通过函数的返回值就可以把函数与函数关联起来,比如登录成功返回的token,带上token可以访问个人主页。
def login(username='wuya',password='admin'):
if username=='wuya' and password=='admin':
return'aesrtsdf'
else:
return'账户登录有错误'
print(login())
def profile(token):
if token=='aesrtsdf':
print('欢迎访问个人主页')
else:
print('重定向到登录界面')
profile(token=login())
2、拿到函数返回值的方式
A:输出函数
B:把函数的返回值给一个变量,变量的值就是函数的返回值
def login(username='wuya',password='admin'):
if username=='wuya' and password=='admin':
return'aesrtsdf'
else:
return'账户登录有错误'
print(login())
str1=login()
print(str1)
3、规则
①:函数的返回值是在函数的表达式中,return关键字后面, return关键字后面就是函数的返回值
def login(username='wuya',password='admin'):
if username=='wuya' and password=='admin':
return'aesrtsdf'
else:
return'账户登录有错误'
print(login())
②:一个函数可以有多个返回值 (使用多个变量接受)
def login2(username,password):
return username,password
a,b=login2(username='wuya',password='admin')
print(a)
print(b)
③、单一个函数没有写return的时候,不代表函数没有返回值,其实它的返回值是None
def sum(a,b):
print(a+b)
print(sum(1,2))
(八)、全局变量/局部变量
1、全局变量
在一个python文件里面定义的变量叫全局变量
2、局部变量
在一个函数内部定义的变量叫局部变量
3、优先级
①、在python文件中,当全部变量与局部变量一致的时候,全局变量的优先级是高于局部变量的
name='str1'
def func():
name='str2'
print(name)
②、在函数内部,局部变量的优先级是高于全局变量的
name='str1'
def func():
name='str2'
print(name)
func()
4、把全局变量引用到函数内部:global
name='str1'
def func():
global name
print(name)
func()
(九)、内部函数
1、得到一个元素的长度 len()
2、Sorted() 字典的排序
dict1={'name':'lxd','age':'18','work':'testDev'}
dict2={'sex':'男'}
#字典的排序:sorted() (需相同数据类型的)
print(dict(sorted(dict1.items(),key=lambda item:item[0])))
print(dict(sorted(dict1.items(),key=lambda item:item[1])))
思路:先通过循环将他获取为[['name','age','work'],['lxd',18,'testDev']]
然后提取item,通过item中的key/value进行排序,也就是item[0]/item[1]进行排序,最后加上dict强制性进行更改为字典类型
3、dir()
Dir()函数不带参数时,返回的当前范围内的变量、方法和定义的类型列表;
带参数时,返回参数的属性、方法列表。
4、id()获取对象的内存地址
5、Type()查看对象的数据类型
6、Print()输出/Input()输入
7、匿名函数
a=lambda a,b:a+b
print(a(3,4))
8、range 指的是一个范围(包含开始不包含结尾)
for item in range(2,10):
print(item)
造数据
print(list(range(5)))
9、列表推导式
lists=[x for x in range(10) ]
print(lists)
10、过滤函数:filter
①、传统模式过滤
lists=[x for x in range(10) ]
list1=[]
for item in lists:
if item>=2:
list1.append(item)
print(list1)
②、filter模式过滤
lists=[x for x in range(10) ]
print(list(filter(lambda x:x>2,lists)))
③、列表推导式过滤
lists=[x for x in range(10) if x>2 ]
print(lists)
11、map:所有的元素做同样的操作
①、传统的模式
lists=[x for x in range(10)]
list1=[ ]
for item in lists:
list1.append(item+10)
print(list1)
②、Map模式
lists=[x for x in range(10)]
print(list(map(lambda x:x+10,lists)))