垃圾回收机制详解(了解)

1、引用计数

x = 10 # 直接引用

print(id(x))

y = x

z = x

l = ['a', 'b', x] # 间接引用

print(id(l[2])) #

d = {'mmm': x} # 间接引用

print(id(d['mmm']))

x=10

l=['a','b',x] # l=['a'的内存地址,'b'的内存地址,10的内存地址]

x=123

print(l[2])

x=10

x=[10,]

l=['a','b',10]

2、标记清除:用来解决循环引用带来的内存泄露问题

循环引用=>导致内存泄露

l1 = [111, ]

l2 = [222, ]

l1.append(l2) # l1=[值111的内存地址,l2列表的内存地址]

l2.append(l1) # l2=[值222的内存地址,l1列表的内存地址]

print(id(l1[1]))

print(id(l2))

print(id(l2[1]))

print(id(l1))

print(l2)

print(l1[1])

del l1

del l2

3、分代回收:用来降低引用计数的扫描频率,提升垃圾回收的效率

一:接收用户的输入

在Python3:input会将用户输入的所有内容都存成字符串类型

username = input("请输入您的账号:") # "egon"

print(username, type(username))

age = input("请输入的你的年龄: ") # age="18"

print(age, type(age))

age=int(age) # int只能将纯数字的字符串转成整型

print(age > 16)

int("12345")

int("1234.5")

int("1234abc5")

在python2中:

raw_input():用法与python3的input一模一样

input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型

age=input(">>>>>>>>>>>>>>>>>>>>>: ")

: 18

age,type(age)

(18, <type 'int'>)

x=input(">>>>>>>>>>>>>>>>>>>>>: ")

: 1.3

x,type(x)

(1.3, <type 'float'>)

x=input(">>>>>>>>>>>>>>>>>>>>>: ")

: [1,2,3]

x,type(x)

([1, 2, 3], <type 'list'>)

二:字符串的格式化输出

2.1 %

值按照位置与%s一一对应,少一个不行,多一个也不行

res="my name is %s my age is %s" %('egon',"18")

res="my name is %s my age is %s" %("18",'egon')

res="my name is %s" %"egon"

print(res)

以字典的形式传值,打破位置的限制

res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'egon'}

print(res)

%s可以接收任意类型

print('my age is %s' %18)

print('my age is %s' %[1,23])

print('my age is %s' %{'a':333})

print('my age is %d' %18) # %d只能接收int

print('my age is %d' %"18")

2.2 str.format:兼容性好

按照位置传值

res='我的名字是 {} 我的年龄是 {}'.format('egon',18)

print(res)

res='我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('egon',18)

print(res)

打破位置的限制,按照key=value传值

res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name='egon')

print(res)

了解知识

"""

2.4 填充与格式化

先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]

<10:左对齐,总共10个字符,不够的用号填充

print('{0:<10}'.format('开始执行')) # 开始执行*****

>10:右对齐,总共10个字符,不够的用号填充

print('{0:*>10}'.format('开始执行')) # ******开始执行

^10:居中显示,总共10个字符,不够的用号填充

print('{0:*^10}'.format('开始执行')) # 开始执行

2.5 精度与进制

print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124

print('{0:b}'.format(123)) # 转成二进制,结果为:1111011

print('{0:o}'.format(9)) # 转成八进制,结果为:11

print('{0:x}'.format(15)) # 转成十六进制,结果为:f

print('{0:,}'.format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931

"""

2.3 f:python3.5以后才推出

x = input('your name: ')

y = input('your age: ')

res = f'我的名字是{x} 我的年龄是{y}'

print(res)

1、算数运算符

print(10 + 3.1)

print(10 + 3)

print(10 / 3) # 结果带小数

print(10 // 3) # 只保留整数部分

print(10 % 3) # 取模、取余数

print(10 ** 3) # 取模、取余数

2、比较运算符: >、>=、<、<=、==、!=

print(10 > 3)

print(10 == 10)

print(10 >= 10)

print(10 >= 3)

name=input('your name: ')

print(name == 'egon')

3、赋值运算符

3.1 =:变量的赋值

3.2 增量赋值:

age = 18

age += 1 # age=age + 1

print(age)

age*=3

age/=3

age%=3

age=3 # age=age3

3.3 链式赋值

x=10

y=x

z=y

z = y = x = 10 # 链式赋值

print(x, y, z)

print(id(x), id(y), id(z))

3.4 交叉赋值

m = 10

n = 20

print(m,n)

交换值

temp=m

m=n

n=temp

print(m,n)

m,n=n,m # 交叉赋值

print(m,n)

3.5 解压赋值

salaries = [111, 222, 333, 444, 555]

把五个月的工资取出来分别赋值给不同的变量名

mon0=salaries[0]

mon1=salaries[1]

mon2=salaries[2]

mon3=salaries[3]

mon4=salaries[4]

解压赋值

mon0,mon1,mon2,mon3,mon4=salaries

print(mon0)

print(mon1)

print(mon2)

print(mon3)

print(mon4)

mon0,mon1,mon2,mon3=salaries # 对应的变量名少一个不行

mon0,mon1,mon2,mon3,mon4,mon5=salaries # 对应的变量名多一个也不行

引入,可以帮助我们取两头的值,无法取中间的值

取前三个值

x,y,z,
=salaries=[111,222,333,444,555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为

print(x,y,z)

print(_)

取后三个值

*_,x,y,z=salaries=[111,222,333,444,555]

print(x,y,z)

x,*_,y,z=salaries=[111,222,333,444,555]

print(x,y,z)

salaries=[111,222,333,444,555]

,*middle,=salaries

print(middle)

解压字典默认解压出来的是字典的key

x, y, z = dic = {'a': 1, 'b': 2, 'c': 3}

print(x, y, z)

python入门005的更多相关文章

  1. 毫无基础的人入门Python,Python入门教程

    随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...

  2. Python练习题 005:三个数字由大到小排序输出

    [Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...

  3. python入门简介

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  4. python入门学习课程推荐

    最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...

  5. Python运算符,python入门到精通[五]

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...

  6. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  7. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  8. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  9. python入门教程链接

    python安装 选择 2.7及以上版本 linux: 一般都自带 windows: https://www.python.org/downloads/windows/ mac os: https:/ ...

随机推荐

  1. 深入浅出-TCP/IP协议族剖析&&Socket

    Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 #简介 该篇文章主要回顾–TCP/I ...

  2. Python抽象类以及元类

    抽象基类: 继承的约束与协议 __doc__ = """ 抽象基类: 继承的约束与协议 # 抽象基类 --- 有点java的味道,也有点golang的味道,继承,协议,接 ...

  3. Vue3 新特性

    一.vue3 为什么要重写 两个主要原因考虑重写vue新版本主要功能: 1.主流浏览器对新的JavaScript语言特性的普遍支持. 2.当前Vue代码库随着时间的推移而暴露出来的设计和体系架构问题. ...

  4. 键盘鼠标共享效率工具----Synergy

    在日常工作中,为了提高工作效率以及用户体验,会一个主机接多个显示器,像程序员一般都是使用两块显示器. 然而,有很多人是和我一样,自己有多台电脑,两个笔记本.公司一个台式机,如何在台机器之间来回切换工作 ...

  5. Java 多线程基础(五)线程同步

    Java 多线程基础(五)线程同步 当我们使用多个线程访问同一资源的时候,且多个线程中对资源有写的操作,就容易出现线程安全问题. 要解决上述多线程并发访问一个资源的安全性问题,Java中提供了同步机制 ...

  6. [每日一题2020.06.17] leetcode周赛T3 5438 制作m束花所需的最少天数 二分搜索

    题目链接 这题我开始一直在想如何在数组上dp操作搜索区间, 很蠢, 实际上用二分查找的方法可以很快的解决 首先我们通过一个函数判断第x天是否符合题意, 如果x天可以做出m束花, 那么大于m的天数必然可 ...

  7. Python里的黄金库,学会了你的工资至少翻一倍

    作者:[已重置]链接:https://zhuanlan.zhihu.com/p/26054228来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 阅读本文大概需要5分钟 ...

  8. python的坑--你知道吗?

    python的坑--你知道吗? 1.列表的坑 坑的地方是:因为列表用pop之后,后面的索引都会自动减一 # 列表的坑之一 list1 = ['python','java','php','c','c++ ...

  9. 从 0 开始机器学习 - 神经网络反向 BP 算法!

    最近一个月项目好忙,终于挤出时间把这篇 BP 算法基本思想写完了,公式的推导放到下一篇讲吧. 一.神经网络的代价函数 神经网络可以看做是复杂逻辑回归的组合,因此与其类似,我们训练神经网络也要定义代价函 ...

  10. redis高级命令4 持久化机制 、事务

    redis的事务是支持很简单,基本没有啥用我们来看下面的列子 我们开启一个事务,在事务中执行了age 加1,set a4 ,还有对一个字符串进行加一,对字符串加1导致了事务失败,按道理incr age ...