三元运算

 name = "张三" if 1 == 2 else "李四"
print(name)
name1 = "张三" if 1 == 1 else "李四"
print(name1)

运行结果
      李四

张三

三元运算就是如果为真取前面的值1,如果为假为后面的值2  值1 if条件 else 值2

set集合主要有交集,并集,(无序不重复)

 old_dict ={
"#1":11,
"#2":22,
"#3":100,
} new_dict = {
"#1":33,
"#4":22,
"#7":100,
}
old_keys= old_dict.keys()
new_keys = new_dict.keys()
old_set_keys=set(old_keys)
new_set_keys=set(new_keys)
remove_set = old_set_keys.difference(new_set_keys)
add_set = new_set_keys.difference(old_set_keys)#求new_set_keys去掉与old_set_keys相同的项,余下的
update_set = old_set_keys.intersection(new_set_keys) #求交集
print(remove_set)
print(add_set)
print(update_set)
for i in remove_set:
old_dict.pop(i)
for j in add_set:
old_dict.update({j:new_dict[j]})
for m in update_set:
old_dict[m]=new_dict[m]
print(old_dict)

集合主要用于更新,如上面将old_dict字典与新的new_dict相同的key更新为新的,而与new_dict不同的#2 #3则移除,并将new_dict中没有的#4 #7更新到old_dict中结果如下
{'#1': 33, '#4': 22, '#7': 100}

浅拷贝与深拷贝

对于数字与字符串深浅一样

 import copy
n1="123n"
n2=copy.copy(n1)#浅拷贝
n3=copy.deepcopy(n1) #深拷贝
print(id(n1))
print(id(n2))
print(id(n3))

运行结果
18477328
18477328
18477328

内存地址一样的,所以深浅一样

list tuple dict深浅有区别,浅拷最外一层,深拷底层的数据不拷其它的都拷

 import copy
n1=[11,22,33,{"k1":"v1"}]
n2=copy.copy(n1)#浅拷贝
n3=copy.deepcopy(n1) #深拷贝
print(id(n1[3]))
print(id(n2[3]))
print(id(n3[3]))

运行结果

16762888
16762888
18553096

 import copy
n1=[11,22,33,{"k1":"v1"}]
n2=copy.copy(n1)#浅拷贝
n3=copy.deepcopy(n1) #深拷贝
print(id(n1[3]["k1"]))
print(id(n2[3]["k1"]))
print(id(n3[3]["k1"]))

运行结果
18740648
18740648
18740648

说明最底层的数据元素深浅一样,没有被拷贝

=======================================================

函数

实参与形参

 import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def mail(n):#形参n为目的邮箱地址
msg = MIMEText('邮件内容如服务器挂了', 'plain', 'utf-8')
msg['From'] = formataddr(["发件人姓名", '13632610XXXX@139.com'])
msg['To'] = formataddr(["自已", '43125471@qq.com'])
msg['Subject'] = "邮件标题 " server = smtplib.SMTP("smtp.139.com", 25)
server.login("1363261XXXX@139.com", "你登陆邮箱的密码")
server.sendmail('1363261XXX@139.com', [n, ], msg.as_string())
server.quit()

mail("43125471@qq.com")将实参传入到形参中,一般情况一一对应的

如果改变顺序则要

 def f(a,b):
print(a,b)
f(b="",a="")

运行结果是123 456
传多个参数(包括0个参数)

 def f(*a):
print(a,type(a))
f(11,22,33)

运行结果 (11, 22, 33) <class 'tuple'>加一个*为一个元组,如果加两个*则是一个字典

def f(**kwargs):
print(kwargs,type(kwargs))
f(k1=123,k2=456)

运行结果{'k1': 123, 'k2': 456} <class 'dict'> 为一个字典

 def f(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
f(11,22,33,k1=123,k2=456)

运行结果(11, 22, 33) <class 'tuple'>
              {'k2': 456, 'k1': 123} <class 'dict'>
加一个*传入的变成元组,**为字典,

 def f(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
return kwargs
print(kwargs, type(kwargs)) dic=f(k1=123,k2=456)
print(dic)

运行结结果() <class 'tuple'>
                  {'k2': 456, 'k1': 123} <class 'dict'>
                 {'k2': 456, 'k1': 123}

说明return语句返回值之后下面的语句不在执行,如果没有返回值则返回none

如果没有指定可以设置默认参数

def f(b,a=3):
print(a,b)
f(1)

运行结果 3 1 其中1传给了b,a 没有传实参,默认参数都要写在后面不能写成def f(a=3,b):

===================================================

局部变量(只在函数中用),全局变量(所有都能用的)

 P="lisi"
def func1():
a=123 global P
P=""
print(a) def func2():
a=456
print(a)
print(P)
func1()
func2()

运行结果123
               456
               0000

全局变量用大写,局部变量用小写,如果想在函数里面改变全局变量,则要加一个global P安装

========================================================================

函数

a定义

b函数名

c 返回值

1 return  返回值 ,没有则为None

2 return语句之后则不在执行

d 参数

1,形参,实参

2 普通参数与实参一般一一对应,如果不对应则要能通过形参=实参

3 默认形参放在所有形参数的尾部

4 动态参数 一个*args为tuple **kargs为dict类型

全局与局部变量

全局大写,哪在局部中要修改global

局部变量小写

====================================================

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

 C=3
def func(arg1,arg2):
global C
C=C+1
if arg1 == 0:
print(arg1,arg2)
arg3 = arg1 + arg2
print(arg3) if C > T:
print(arg3)
return arg3
func(arg2,arg3)
t=input("please input 第几位数:")
T=int(t)
func(0,1)

引用了全局变量,并通过C计数器控制

运行结果please input  第几位数:13
0 1
1
2
3
5
8
13
21
34
55
89
144
144

======================================

写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

 def func(s):
isdigit_sum = 0
isalpha_sum = 0
isspace_sum = 0
other_sum = 0
for i in s:
# print(i)
if i.isdigit():
isdigit_sum +=1
elif i.isalpha():
isalpha_sum +=1
elif i.isspace():
isspace_sum +=1
else:
other_sum +=1
return {"数字":isdigit_sum,"字母":isalpha_sum,"空格":isspace_sum,"其它":other_sum}
m="ssss234s123 345"
t=func(m)
print(t)

写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容

 def func(s):
for i in s: if i==" ":
return True def fun_flag(flag,s):
if flag:
print(s,"有空内容")
else:
print(s,"输入的内容没有空格")
m="mn nnl"
lis=[11,22,33]
ret_m=func(m)
fun_flag(ret_m,m)
ret_lis=func(lis)
fun_flag(ret_lis,lis)

写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

dic = {"k1""v1v1""k2": [11,22,33,44]}
 
PS:字典中的value只能是字符串或列表
 def func(s):
dic1={}
for i in s.keys():
if len(s[i]) > 2:
dic1.update({i:s[i][0:2]}) #新增一个key和value并且value值切片,取前两位
return dic1
dic = {"k1": "v1v1", "k2": [11,22,33,44],"k3":""}
t=func(dic)
print(t)

写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

 def func(s):
new_list=[]
for i in range(0,len(s)):
if i % 2 == 1:
new_list.append(s[i])
return new_list
lis=[11,23,33,44,55,66]
print(func(lis))

写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

 def func(s):
if len(s) > 2:
new_list=s[0:2]#进行切片
return new_list
s1=[11,22,33,44]
lis1=func(s1)
print(lis1)

python四的更多相关文章

  1. python 四种数值类型(int,long,float,complex)介绍

    Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据 ...

  2. python(四)函数

    一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下 ...

  3. day25 Python四个可以实现自省的函数,反射

    python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) ...

  4. Python 四种数值类型(int,long,float,complex)区别及转换

    Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数), 数字数据类型存储数值.他们是不可改变的数据类型,这意味着改变数字数据类型的结 ...

  5. Behave + Selenium(Python) 四

    来自T先生 今天我们开始讲讲behave的厉害的地方. Tag文件的使用 在behave里面,如何来控制哪些case需要run,哪些case不需要run,这个时候就用Tag来控制.好了,接下来我用Ta ...

  6. Python(四) 分支、循环、条件与枚举

    一.什么是表达式 表达式(Expression)是运算符(operator)和操作数(operand)所构成的序列 二.表达式的优先级 三.表达式优先级练习 优先级同级 从左往右计算 1 or 2 a ...

  7. Python四种实现单例模式的方法

    在这之前,先了解super()和__new__()方法 super()方法: 返回一个父类或兄弟类类型的代理对象,让你能够调用一些从继承过来的方法. 它有两个典型作用: a. 在单继承的类层次结构中, ...

  8. 吾八哥学Python(四):了解Python基础语法(下)

    咱们接着上篇的语法学习,继续了解学习Python基础语法. 数据类型大体上把Python中的数据类型分为如下几类:Number(数字),String(字符串).List(列表).Dictionary( ...

  9. Python四步实现决策树ID3算法,参考机器学习实战

    一.编写计算历史数据的经验熵函数 from math import log def calcShannonEnt(dataSet): numEntries = len(dataSet) labelCo ...

  10. python四:函数练习--小白博客

    为什么要有函数?函数式编程定义一次,多出调用函数在一定程度上可以理解为变量函数的内存地址加上()就是调用函数本身也可以当做参数去传参 不用函数:组织结构不清晰代码的重复性 def test():#te ...

随机推荐

  1. 第二章:python基础,数据类型

    """第二章:python基础,数据类型2.1 变量及身份运算补充2.2 二进制数2.3 字符编码每8位所占的空间位一个比特,这是计算机中最小的表示单位.每8个比特组成一 ...

  2. IDEA中文出现乱码解决(转)

    转自:http://lcl088005.iteye.com/blog/2284696 我是个idea的忠实用户,新公司的项目都是用eclipse做的,通过svn拉下代码后发现,注释的内容里,中文内容都 ...

  3. Kubernetes持久化存储2——探究实验

    目录贴:Kubernetes学习系列 一.简介 本文在“创建PV,创建PVC挂载PV,创建POD挂载PVC”这个环境的基础上,进行各种删除实验,并记录.分析各资源的状态. 二.实验脚本 实验创建了一个 ...

  4. Beautiful Soup 学习手册

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式   快速开始 下面的一段HTML代码将作为例 ...

  5. spring 的web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java ...

  6. nodejs笔记之初识node

    1.安装node; node -v  //检测node是否安装成功 node可以做什么: 搭建服务器: 读写文件: 连接数据库: 爬虫: node的模块系统: 原生模块(如http,fs); 自定义模 ...

  7. 剑指offer(26)二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 题目分析 要生成排序的双向列表,那么只能是中序遍历,因为中序遍历才能从小到 ...

  8. JS设计模式(4)迭代器模式

    什么是迭代器模式? 定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示. 主要解决:不同的方式来遍历整个整合对象. 何时使用:遍历一个聚合对象. 如何解决:把在元素之间游 ...

  9. 关于变量,JAVA基本数据类型,运算符类型,如何从控制台接收输入的数据

    一,变量与变量的使用 1.变量是在程序运行中其值可以改变的量,java程序的一个基本存储单元 2.变量的使用 变量类型+变量名 二,JAVA基本数据类型 1.数值型a.整点类型(byte.short. ...

  10. 关于MVC RouteExistingFiles疑问后续

    前两天写了<关于MVC RouteExistingFiles疑问>,本来希望寻求大佬快速解答,奈何无人问津. 只能查看.NET 源代码,可以使用反编译工具(我用IL spy),也可以在线查 ...