一 实例变量与类变量

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学习特性的更多相关文章

  1. Python3学习之路~0 目录

    目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...

  2. Python3学习(3)-高级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...

  3. Python3学习(2)-中级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...

  4. Python3学习(1)-基础篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...

  5. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  6. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  7. Python3新特性 类型注解 以及 点点点

    Python3新特性 类型注解 以及 点点点 ... Python3 的新特性 Python 是一种动态语言,变量以及函数的参数是 不区分类型 的 在 函数中使用类型注解 相当于 给 形参的 类型 设 ...

  8. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  9. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

随机推荐

  1. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_09-修改页面-服务端-接口开发

    需要写两个接口 api的接口内定义两个方法.修改的地方单独传了id @ApiOperation("根据页面id查询页面信息") public CmsPage findById(St ...

  2. delphi7 treeview + 数据库 实现动态节点维护

    首先说下树节点对应的表的基本结构,必需要有的字段(节点编号,父节点编号,节点名称),其他字段根据你开发的需要添加从添加节点开始,一开始就取出表中最大节点编号,每次添加节点的时候,该节点编号增加1;添加 ...

  3. laravel 自带消息notification通知

    原文地址:https://blog.csdn.net/zhangxh1013/article/details/53130490

  4. IDEA在引入Maven项目后Dependencies中在出现红色波浪线

    解决方法: 移除pom.xml中相关依赖,再重新添加即可. 情况及具体解决方法如下: 1.在Maven Project中 Dependencies 出现红色波浪线,如图所示 2.查询本地仓库:jar包 ...

  5. OpenCV.3.4.6_VS2015&cmake编译x86版本的bin&lib

    ZC:<<OpenCV3编程入门>> 的 2.2.2 中也有该内容的讲解 1.参考网址:opencv3.3.0+vs2015+cmake编译opencv x86 - wowo的 ...

  6. @ControllerAdvice和@ExceptionHandler

    1. 使用 @ControllerAdvice和@ExceptionHandler处理全局异常 1. 新建异常信息实体类 非必要的类,主要用于包装异常信息. package com.test.exce ...

  7. Windows远程连接server(Linux系统)及可视化

    方法1:命令行连接后使用server上安装好的可视化编辑器IDE: Step 1: 工具准备:putty.exe:Xming-6-9-0-31-setup.exe:Xming-fonts-7-7-0- ...

  8. flannel vxlan工作基本原理及常见排障方法

    写在前面 最近用kubeadm鼓捣了几个cluster集群测试用,网络用的flannel.因为这些机器都不是纯净的环境(以前部署过其他的k8s或者有一些特别的设置),所以部署起来遇到了很多问题.看了下 ...

  9. spring security中Authority、Role的区别

    最近在研究spring security时,大概研究了一下Authority.Role之间到底有什么本质的区别. 如果你使用的是hasRole方法来判断你的登录用户是否有权限访问某个接口,那么你初始化 ...

  10. Oracle的查询-分页查询

    --Oracle中的分页 --rownum行号:当我们做select操作时候 --每查询出一行记录,就在该行加上一个行号 --行号从1开始,一次递增,不能跳着走 ----emp表工资倒叙排列后,每页5 ...