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 基础的更多相关文章

  1. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  4. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  5. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  6. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  7. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  8. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

  9. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  10. python基础之编码问题

    python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode--->utf-8(utf-16和u ...

随机推荐

  1. cf723a The New Year: Meeting Friends

    There are three friend living on the straight line Ox in Lineland. The first friend lives at the poi ...

  2. css的用法

    Css(Cascading Style Sheets,层叠样式表)是一种页面美化方法,通过编辑Css的对象属性达到美化页面的效果.Css的操作基本单元为对象,使用CSS的感觉就像是使用C++/C中的函 ...

  3. C#通过事件跨类调用WPF主窗口中的控件

    xaml.cs文件: using System; using System.Timers; using System.Windows; using System.Windows.Forms; name ...

  4. C Primer Plus_第6章_循环_编程练习

    1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...

  5. AJAX里,使用XML返回数据类型,实现简单下拉列表

    XML:可扩展标记语言 HTML:超文本标记语言 标签:<标签名></标签名> 特点: 1.必须要有一个根 2.标签名自定义 3.对大小写敏感 4.有开始就要有结束 5.同一级 ...

  6. C#中(double)str;与Convert.ToDouble(str);有什么区别

    1. string str = "32323";2. double a = (double)str ;3. double a = Convert.ToDouble(str); 第3 ...

  7. linux服务器做网关

    首先创建两张路由表,只需要添加到相应的文件中即可,Linux一共支持255个路由表,rt_tables文件中默认已经存在了三张路由表,分别是:   255    local   254    main ...

  8. Oracle监听的静态注册和动态注册

    静态注册:通过解析listene.ora文件 动态注册:由PMON进程动态注册至监听中 在没有listener.ora配置文件的情况下,如果启动监听,则监听为动态注册.用图形化netca创建的监听,默 ...

  9. linux日志文件

    linux日志文件 在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的 ...

  10. UnicodeToGB2312

    http://www.myluoluo.com/unicodetogb2312.love 你是否遇到类似于:\u5355\u4f4d之类的让人纠结的字符? 一个JS文件中一堆一堆的全都是这种,分析起来 ...