博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python说文解字_杂谈01
阅读量:5302 次
发布时间:2019-06-14

本文共 3736 字,大约阅读时间需要 12 分钟。

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 startmy_ask  # Noneprint(my_ask) # dec startmy_ask1 = decorator_funcmy_ask1() # dec startprint(my_ask1()) # None

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

  调用即执行!

 

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

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

this func

<function funcZero at 0x0000014F0DD0C1E0>

 

 

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

def funcZero():    print("this funcZero")def func():    print("this func")    return funcZerof = 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) # 

 

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

 

  *如果我们写上括号

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

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

 

  * 如果我们构造一个对象

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

 

  执行相同,返回值为空。

 

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

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

 

  

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

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

  这个观点很重要!

  打印执行过程

def funcBack(name):    print(1)    print("this funcBack {}".format(name))    print(2)def func(name):    print(3)    print("this func {}".format(name))    print(4)    return funcBackf = 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(3)    print("this func {}".format(name))    print(4)    return func1f = 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

 

 

转载于:https://www.cnblogs.com/noah0532/p/10964342.html

你可能感兴趣的文章
【模板】对拍程序
查看>>
【转】redo与undo
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&amp;语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>