python 基础
Python基础
三元运算(三目运算),是对简单的条件语句的缩写。
# 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 “值1” 赋值给result变量,否则,将“值2”赋值给result变量
set
set集合,是一个无序且不重复的元素集合
add-----添加元素
# st = {"ale","liu","nuh","koi"}
# st.add("sdf")
# print(st)
clear-----清除列表
# st = {"ale","liu","nuh","koi"}
# st.clear()
# print(st)
difference----查找st中有的,ss没有的
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# print(st.difference(ss))
#
# {'koi', 'liu'}
difference-update----找到A中有的B中没有的,并更新自己
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# st.difference_update(ss)
# print(st)
#
# {'liu', 'koi'}
discard---移除指定元素,不存在不会报错
# st = {"ale","liu","nuh","koi"}
# st.discard("liu")
# print(st) # {'nuh', 'ale', 'koi'} intersection--------交集,找出两个都有的
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# ret = st.intersection(ss)
# print(ret) intersection-update----交集,找出两个相同的并更新st
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# st.intersection_update(ss)
# print(st) {'nuh', 'ale'} isdisjoint 如果没有交集返回True,如果有交集返回Fales
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# print(st.isdisjoint(ss))
#
# False
issubset-------是否是子序列
# st = {"ale","liu","nuh","koi"}
# ss = {"ale","nuh",}
# print(ss.issubset(st))
# True issuperset----是否是夫序列
# st = {"ale","liu","nuh","koi"}
# ss = {"ale","nuh",}
# print(st.issuperset(ss))
# True
pop-------删除随机元素
# st = {"ale","liu","nuh","koi"}
# st.pop()
# print(st)
remove-----删除指定元素
# st = {"ale","liu","nuh","koi"}
# st.remove("ale")
# print(st)
#
# {'koi', 'liu', 'nuh'}
symmetric_difference----对称交集,打印两个集合中不同的元素
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# print(st.symmetric_difference(ss))
# {'liu', 'koi', 'ds', 'alex'}
symmetric_difference_update----对称交集,并更新st
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# st.symmetric_difference_update(ss)
# print(st)
# {'koi', 'alex', 'ds', 'liu'} union------并集,把两个变量合起来
# st = {"ale","liu","nuh","koi"}
# ss = {"alex","ale","nuh","ds"}
# print(st.union(ss))
# {'ale', 'koi', 'alex', 'nuh', 'liu', 'ds'}
update------更新
# st = {"ale","liu","nuh","koi"}
# sk = {"ala"}
# st.update(sk)
# print(st)
# {'koi', 'ale', 'liu', 'ala', 'nuh'}
一、数字和字符串
对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址
import copy
# ######### 数字、字符串 #########
n1 = 123
# n1 = "i am alex age 10"
print(id(n1))
# ## 赋值 ##
n2 = n1
print(id(n2))
# ## 浅拷贝 ##
n2 = copy.copy(n1)
print(id(n2)) # ## 深拷贝 ##
n3 = copy.deepcopy(n1)
print(id(n3))

二、其他基本数据类型
对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。
1、赋值
赋值,只是创建一个变量,该变量指向原来内存地址,如
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n2 = n1

2、浅拷贝
浅拷贝,在内存中只额外创建第一层数据
import copy
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n3 = copy.copy(n1)

3、深拷贝
深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)
import copy
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n4 = copy.deepcopy(n1)


在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:
while True:
if cpu利用率 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 if 硬盘使用空间 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 if 内存占用 > 80%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
腚眼一看上述代码,if条件语句下的内容可以被提取出来公用,如下:
def 发送邮件(内容)
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 while True: if cpu利用率 > 90%:
发送邮件('CPU报警') if 硬盘使用空间 > 90%:
发送邮件('硬盘报警') if 内存占用 > 80%:
对于上述的两种实现方式,第二次必然比第一次的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
函数式编程最重要的是增强代码的重用性和可读性
二、定义和使用
def 函数名(参数):
...
函数体
...
返回值
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
1、返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
以上要点中,比较重要有参数和返回值
def 发送短信():
发送短信的代码...
if 发送成功:
return True
else:
return False
while True:
# 每次执行发送短信函数,都会将返回值自动赋值给result
# 之后,可以根据result来写日志,或重发等操作
result = 发送短信()
if result == False:
记录日志,短信发送失败...
2、参数
为什么要有参数?
函数的有三中不同的参数:
- 普通参数
- 默认参数
- 动态参数
python 基础的更多相关文章
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 进击的Python【第二章】:Python基础(二)
Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- python基础之day1
Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- python基础之编码问题
python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode--->utf-8(utf-16和u ...
随机推荐
- HP滤波原理浅学
今天偶然看到如果使用eviews做HP滤波,一时好奇,于是找了点资料看看~ 由于纯属自学,没有找到教材,大家姑且一看咯,也不知道对不对哈.
- 【Tomcat】tomcat报连接超时错误
程序一直报这个错误 [getui-server][ERROR] [2016-03-17 10:50:00] getui.task.HftMongoInfoTask.execute(137) | --H ...
- Discuzx系统 CSS 编码规范,CSS属性书写顺序
1. 属性写在一行内,属性之间.属性名和值之间以及属性与“{}”之间须有空格,例如:.class { width: 400px; height: 300px; } 2. 属性的书写顺序: ...
- 最短JavaScript判断是否为IE6、IE的方法
常用的 JavaScript 检测浏览器为 IE 是哪个版本的代码,包括是否是最人极端厌恶的 ie6 识别与检测. var isIE=!!window.ActiveXObject; var isIE6 ...
- BZOJ4551——[Tjoi2016&Heoi2016]树
1.题意: 给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个 结点,可以打多次标记.)2. 询问操作:询问某个 ...
- Qt界面中嵌入其他exe程序的界面,使用Qt5
下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/4 ...
- python基础六
模块 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上 ...
- ffmpeg-20160822-bin.7z
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 5 屏幕横向放大 20 像素 6 屏幕横向缩小 20 像素 S 下一帧 [ -2秒 ] +2 ...
- 自定义RatingBar,不同分辨率屏幕下图片拉伸或者显示不完整问题解决
1.需要两张评分图片ic_rating_highlight.png ic_rating_normal_white.png(宽高都是52px,且有内边距) 将这两张图片添加到各分辨率文件夹下 开发过 ...
- 安装SQL SERVER 2005出现“sql2005 执行安装向导期间出错 ”
安装sql server 2005时出现“sql2005 执行安装向导期间出错”的提示,百度找了一下,发现原来是解压时候才安装了CD1的,还有CD2的没解压安装,解压CD2安装即可