1. Python在Ubuntu下面下载Python

2. 安装依赖包

  sudo apt-get update

  sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus

  sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev

  sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev

  sudo apt-get install libssl-dev openssl

  sudo apt-get install libffi-dev

3. 把Python3.7 安装到/usr/local 目录

  mkdir tmp

  tar xpvf python3.7.0.tar.xz -C ./tmp

  cd /temp/python3.7.0/./configure -- prefix=/usr/local

  make

  make altinstall

4. 更改.usr/bin/python连接

  ln -s/usr/local/bin/python3.7 /usr/bin/python37

  ln -s/usr/local/bin/pip3.7 /usr/bin/pip37

5. python中一切皆对象。

  Python比其他编程语言的面向对象更加彻底。class也是对象,函数也是对象(Java当中不是),python语言的动态性非常强。是现在面向对象语言中更加彻底的OOP编程语言。类和函数也是对象,属于python的一等公民。类可以理解成一个模板,模板也是一个对象,模板对象。类是一个对象,是可以动态修改这个属性的。

  赋值给一个变量;可以添加到集合对象中;可以作为参数传递给函数;可以当做函数的返回值去执行这个返回的函数

def ask(name="bobby"):
print(name) class Person:
def __iter__(self):
print("bobby1") def print_type(item):
print(type(item)) def decorator_func():
print("dec start")
return ask # 返回ask函数去执行这个函数,这个不是函数的嵌套,是函数的返回。基于装饰器实现的一种原理。 # my_ask = decorator_func()
# my_ask("tom") # obj_list = []
# obj_list.append(ask)
# obj_list.append(Person)
# for item in obj_list:
# print(item()) # my_func = ask
# my_func("bobby") # my_class = Person
# my_class()

  最难理解的是第四条,return 函数名,就是返回一个函数调用。

  返回即执行!

def decorator_func():
print("dec start") my_ask = decorator_func() #dec start
my_ask # None
print(my_ask) # dec start my_ask1 = decorator_func
my_ask1() # dec start
print(my_ask1()) # None

  如果一个函数或者是一个类,不想直接执行()不用打,如果想立马执行要打上()

  调用即执行!

6. 函数或者类返回的难点:

def funcZero():
print("this funcZero") def func():
print("this func")
return funcZero f = func() # 调用即执行
print(f) # 返回funcZero内存位置

this func
<function funcZero at 0x0000014F0DD0C1E0>

 

  我们发现调用即执行了func函数,第二部分打印了funcZero函数的的内存位置(返回即执行)

def funcZero():
print("this funcZero") def func():
print("this func")
return funcZero f = func()
print(f())
# this func
# this funcZero
# None

  再次加入括号,发现funzero也执行了

  总结:return = 调用即执行,调用即执行=函数在return后展开。

  其实上面的代码就是等于

def funcZero():
print("this funcZero") def func():
print("this func")
return funcZero
# funcZero函在这类展开!
# def funcZero():
# print("this funcZero")

  总结:

  * 如果我们就一个函数

def func():
print("this func")

  直接写函数不打括号

def func():
print("this func") func # 不显式内容
print(func) # <function func at 0x000002B46100C1E0>

  不显式内容,print显式函数的地址

  *如果我们写上括号

def func():
print("this func") func() # this func
print(func()) # this func
# None

  如果我们不写返回值返回为空,写上括号,直接执行函数

  * 如果我们构造一个对象

def func():
print("this func") f = func() # this func
print(f) # None

  执行相同,返回值为空。

  * 如果不写返回值,返回值为空

def func():
print("this func")
return None f = func() # this func
print(f) # None

  

  * 如果返回一个函数,且两个函数都有参数。函数执行第一遍实质性函数体内,执行第二遍是执行返回的函数,可以给予传参。

def funcBack(name):
print("this funcBack {}".format(name)) def func(name):
print("this func {}".format(name))
return funcBack f = func("thomas")
f("Jerry")
# this func thomas
# this funcBack Jerry

  这个观点很重要!

  打印执行过程

def funcBack(name):
print()
print("this funcBack {}".format(name))
print() def func(name):
print()
print("this func {}".format(name))
print()
return funcBack f = func("thomas")
f("Jerry") # this func thomas
# this funcBack Jerry

  

  * 但是函数调用类是不行

class func1:
def __iter__(self,name):
self.name = name
print("Jerry") def func(name):
print()
print("this func {}".format(name))
print()
return func1 f = func("thomas")
f("Jerry")

Traceback (most recent call last):
File "F:/QUANT/练习/chapter01/all_is_object.py", line 13, in <module>
3
f("Jerry")
TypeError: func1() takes no arguments
this func thomas
4

 

Python说文解字_杂谈01的更多相关文章

  1. Python说文解字_杂谈05

    1. isinstance和type: is和==符号,is指的是内存地址,是不是一个对象,ID知否相同 集成链 class A: pass class B(A): pass b = B() prin ...

  2. Python说文解字_杂谈09

    1. 元类编程代码分析: import numbers class Field: pass class IntField(Field): # 数据描述符: # 初始化 def __init__(sel ...

  3. Python说文解字_杂谈08

    1. Python变量到底是什么? Python和Java中的变量本质不一样,python的变量实质是一个指针 int str,便利贴 a = 1 # 1. a贴在1上面 # 2. 它的过程是先生成对 ...

  4. Python说文解字_杂谈07

    1. 深入dict from collections.abc import Mapping,MutableMapping # dict 属于mapping类型 a = {} print(isinsta ...

  5. Python说文解字_杂谈06

    1. 序列类型的分类: 容器类型:list.tuple,deque 扁平序列:str.bytes.bytearray.array.array 可变序列:list.dequte.bytearray.ar ...

  6. Python说文解字_杂谈04

    1. 鸭子类型: 当你看到一只鸟走来像鸭子,游泳起来像鸭子,叫起来也像鸭子,他么他就可以叫做鸭子.任何可迭代的对象.一样的方法,可以用可迭代的话,就可以迭代的组合打印.__getitem__可以塞到任 ...

  7. Python说文解字_杂谈03

    1. 我们从前面的知识得到,所有的类都要继承自object这个基类(超类),另外我们知道“继承”可以继承类的属性和方法.我们起始通过type创建类的时候,自然而然的也会从ojbect继承他的一些属性和 ...

  8. Python说文解字_杂谈02

    1. Py中三个中啊哟的概念type.object和class的关系. type生成了int生成了1 type->class->obj type用来生成类对象的 object是最顶层的基类 ...

  9. Python说文解字_详解元类

    1.深入理解一切接对象: 1.1 什么是类和对象? 首先明白元类之前要明白什么叫做类.类是面向对象object oriented programming的重要概念.在面向对象中类和对象是最基本的两个概 ...

随机推荐

  1. 指定盘符获取u盘PID、VID、序列号等信息

    最近学习scsi和DeviceIoControl,下载了微软WDK一些例子,以下代码精简自Windows-driver-samples-master\storage\tools\spti\src\sp ...

  2. 八十九、SAP中ALV事件之三,查看事件自带说明

    一.双击REUSE_ALV_GRID_DISPLAY,来到SE37的这个函数模块中,查看IT_EVENT的相关说明,点击后面的显示按钮 二.翻译第一句 三.翻译第二句 四.翻译第三句 五.翻译第四句 ...

  3. enlipse 快捷键

    ctrl+shift+o  去掉多余的引用类

  4. JAVA中的指针

    不同于CPP,JAVA中不需要程序员对指针进行操作.不过,这不代表JAVA没有指针,事实上,JAVA的指针操作都被底层代码封装了.笔者在初学Java时,虽然就了解了形参,实参,StringBuffer ...

  5. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring JDBCTemplate简介

    Spring 框架针对数据库开发中的应用提供了 JDBCTemplate 类,该类是 Spring 对 JDBC 支持的核心,它提供了所有对数据库操作功能的支持. Spring 框架提供的JDBC支持 ...

  6. Docker NGINX 例子

    版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...

  7. hdu 3308 线段树,单点更新 求最长连续上升序列长度

    LCIS Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  8. 线段树&树状数组与离散化的妙用

    牛客2019多校联盟Day7 Fine the median 题意:  每次给数组插入区间[Li,Ri] 内的所有数,每操作一次查询中位数. 遇到这题真的算是巧合,然而就是这种冥冥之中的缘分,给了我线 ...

  9. JAXB工具

    在JDK6之后,都自带了JAXB工具,所以在jdk类库与tomcat WEBAPP类库之间,会造成冲突 https://blog.csdn.net/iteye_13776/article/detail ...

  10. X2安装配置keras环境(包含matplotlib安装)

    https://blog.csdn.net/jonado13/article/details/83933453 1.安装pipapt install python3-pipE: Could not o ...