python3学习特性
一 实例变量与类变量
class Pepple:
__age=18
__name="zhangfff" @classmethod
def GetInfo(cls):
print(cls.__name) AAA=Pepple
AAA.GetInfo()
以上代码 利用类方法输出类变量
print(AAA.__name)
如果直接这样输出会报错,因为__开头的类变量收到保护
但是如果这样输出!!!!
class Pepple:
__age=18
__name="zhangfff" @classmethod
def GetInfo(cls):
print(cls.__name) AAA=Pepple
print(AAA._Pepple__name)
会得到 正确的结果, python对私有变量的保护是假的 会将其改名 为 _类名__XXXX 实例的
__name 改成了 _Pepple__name __age ---> _Pepple__age
class Pepple:
__age=18
__name="zhangfff" @classmethod
def GetInfo(cls):
print(cls.__name) AAA=Pepple
AAA.__age=20
print(AAA.__age)
print(AAA._Pepple__age)
这里需要注意 这里虽然可以赋值 但是这个变量 AAA.__age 其实是实例变量 不是类变量
另外 以_一个下划线开头的 建议 也不要再方法外部直接访问(这种可以直接访问)
二 _ 下划线使用
for _ in range(1,10):
print(_)
一般再不用 _的时候 也就是 可以用_ 代替一般的i
四 python3的魔法方法
class Foo:
"""
this is the dockmet
"""
def func(self):
pass print(Foo.__doc__)
五 python 推导式
lis = [x*x for x in range(10)]
print(lis)
lis = [x*x for x in range(10) if x %2 ==0 ]
print(lis)
lis = [a+b for a in '' for b in 'abc']
print(lis)
dic={"k1":"v1","k2":"v2"}
a = [k+ ":" +v for k,v in dic.items()]
print(a)
dic={i:i**3 for i in range(5)}
print(dic)
s={i for i in "abcdasd" if i not in "abc"}
print(s)
结果为集合
六 简单的装饰器
def outer(func):
def inner():
print("认证成功")
result = func()
print("日志添加成功")
return result
return inner @outer
def f1():
print("业务部门1")
pass f1()
执行过程
一: 到 @outer 这里 知道这是一个装饰器 把f1这个函数名!!!作为参数传递给outer 也就是 outer(f1) 注意这里 不执行函数 这里的outer函数有返回值 inner 这时候 inner就是指向 f1
二 :执行f1() --> 这时候的f1 就是inner
print("认证成功") --> 这时候的func 也就是原来的f1 -->print("业务部门1") --> print("日志添加成功")
七 函数作用域
a=1
def test(a):
print("函数内部修改前a的地址是%s"%(id(a)))
a=2
print("函数内部修改后a的地址是%s"%(id(a))) print("函数外部修改前a的地址是%s"%(id(a)))
test(3)
print("函数外部修改后a的地址是%s"%(id(a)))
我们发现修改前后a的地址没用变化,说明 函数内部的 a 其实是独立的一个变量,赋值运算会再函数内部开辟一个新的变量空间
a=["1qwe"]
def test(a):
print("函数内部修改前a的地址是%s"%(id(a)))
a.append("www")
print("函数内部修改后a的地址是%s"%(id(a))) print("函数外部修改前a的地址是%s"%(id(a)))
test(a)
print("函数外部修改后a的地址是%s"%(id(a)))
如果传递的是一个列表(可变的对象) 发现内部外部的对象是一样的
python3学习特性的更多相关文章
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
- Python3学习(3)-高级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...
- Python3学习(2)-中级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- Python3新特性 类型注解 以及 点点点
Python3新特性 类型注解 以及 点点点 ... Python3 的新特性 Python 是一种动态语言,变量以及函数的参数是 不区分类型 的 在 函数中使用类型注解 相当于 给 形参的 类型 设 ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
随机推荐
- 使用 bash 脚本把 AWS EC2 数据备份到 S3
目录 一.IAM 秘钥授权方式(普通) 1.1.打开 IAM 1.2.添加用户 1.3.安装和配置 AWS CLI 1.4.配置授权 二.IAM 角色授权方式(安全) 2.1.创建一个 EC2 访问 ...
- centos(linux)--vsftpd配置
1.安装 执行 yum -y install vsftpd 注:(1)是否使用sudo权限根据个人的具体情况 (2)rpm -qa | grep vsftpd 可以通过这个检查是否已经安装vsftpd ...
- 攻防世界CRYPTO新手练习
0x01 base64 直接base64 Decode 得到flag cyberpeace{Welcome_to_new_World!} 0x02 Caesar key为12 的恺撒密码,解密德fla ...
- 删除Vue中无权限的【node_modules】文件
npm install rimraf -g rimraf node_modules
- POJ 1789 Truck History【最小生成树模板题Kruscal】
题目链接:http://poj.org/problem?id=1789 大意: 不同字符串相同位置上不同字符的数目和是它们之间的差距.求衍生出全部字符串的最小差距. #include<stdio ...
- The Maze II
There is a ball in a maze with empty spaces and walls. The ball can go through empty spaces by rolli ...
- 怎么才能记住java线程的start()和run()谁是启动方法
start()和run()开始的时候总是记不住那个是线程的启动方法,现在是记得很真切了! 如果用run()启动线程就跟不用线程效果是一样的,因为是run是顺序执行的.start()才是线程的启动方法. ...
- 转载:同一台电脑教你配置多个Tomcat的环境变量
装两个tomcat 分别是6.0和7.0 可想运行tomcat6.0 但是实际上却运行tomcat7.0 两个版本都是用解压缩包 其实就是不能运行tomcat6.0 只能运行7.0 两个环境变量都配置 ...
- GCD欧几里得的拓展算法
欧几里得算法的拓展主要是用于求解 : 已知整数 a, b,然后我们进行 ax + by == gcd(a , b) 的问题求解 那么如何进行求解呢?和欧几里得算法一样, 我们需要进行递归的方式进 ...
- Dijstra_优先队列_前向星
Dijstra算法求最短路径 具体实现方式 设置源点,将源点从原集u{}中取出并放入新建集s{} 找出至源点最近的点q从原集取出放入新集s{} 由q点出发,更新所有由q点能到达的仍处于原集的点到源点的 ...