一、python是静态还是动态类型?是强类型还是弱类型?

1、动态强类型语言(不少人误以为是弱类型)

不要傻傻分不清

2、动态还是静态指的是编译期还是运行期确定类型

3、强类型指的是不会发生隐式类型转换

若类型语言

强类型语言

4、python作为后端语言优缺点

1、胶水语言、轮子多、应用广泛

2、语言灵活、生产力高

3、性能问题、代码维护问题、python2/2兼容问题

动态语言一时爽、代码重构火葬场

二、什么是鸭子类型

当看到一只鸟走起来想鸭子、有用起来像鸭子、叫起来也想鸭子、那么这只鸟就可以被称为鸭子

1、关注点在对象的行为,而不是类型(duck typing)

2、比如 file、StringIO,socket对象都支持read/write方法(file like object)

2、在比如定义了 _iter_魔术方法的队形可以用for迭代

代码验证

1、代码

class Duck():

def quack(self):

print("gua gua")

class Person:

def quack(self):

print("我是人类,但我也会 gua gua gua")

def in_the_forest(duck):

duck.quack()

def game():

donald = Duck()

john = Person()

in_the_forest(donald)

in_the_forest(john)

print(type(donald))

print(type(john))

print(isinstance(donald,Duck))

print(isinstance(john,Person))

game()

2、输出结果

duck_type.py

gua gua

我是人类,但我也会 gua gua gua

True

True

Process finished with exit code 0

三、什么是monkey patch?那些地方用到了?自己如何实现?

1、所谓的monkey patch就是运行时替换

2、比如gevent库需要修改内置的socket

3、from gevent import monkey;monkey.patch_socket()

1、安装gevent

1.在https://pypi.org/project/gevent/#files下载你需要的gevent版本,保存到一个文件夹中

2.在cmd中,cd到你Python的Script下进行安装

3.cd 到你下载好的gevent 路径

4.进入gevent路径的系统盘中

5.pip install 下载好的gevent模块名

2、gevent库需要修改内置的socket

import socket

import gevent

print(socket.socket)

print("After momkey patch")

from gevent import monkey

monkey.patch_socket()

print(socket.socket)

import select

print(select.select)

monkey.patch_socket()

print("After momkey patch")

print(select.select)

输出如下:

monkey_path.py

After momkey patch

After momkey patch

3、自己实现monkey patch

import socket

import gevent

print(socket.socket)

print("After momkey patch")

from gevent import monkey

monkey.patch_socket("After momkey patch")

print(socket.socket)

import select

print(select.select)

monkey.patch_socket()

print("After momkey patch")

print(select.select)

import time

print(time.time())

def _time():

return 1234

time.time = _time

print(time.time())

输出结果如下:

monkey_path.py

After momkey patch

After momkey patch

1564107393.6268823

1234

Process finished with exit code 0

四、什么是自省?

运行时判断一个对象的类型的能力

python一切皆对象、用type、id、isinstance获取对象类型信息

ll = [1, 2, 3]

d = dict(a=1) #{a:1}

print(type(ll))

print(type(d))

print(isinstance(ll, list))

print(isinstance(d, dict))

def add(a, b):

if isinstance(a, int):

return a + b

elif isinstance(a, str):

return a.upper()+b

print(add(1, 2))

print(add(‘head‘, ‘tail‘))

输出结果如下:

introspection.py

True

True

3

HEADtail

Process finished with exit code 0

Inspect模块提供了更多获取时对象信息的函数

ll = [1, 2, 3]

d = dict(a=1) #{a:1}

print(type(ll))

print(type(d))

print(isinstance(ll, list))

print(isinstance(d, dict))

def add(a, b):

if isinstance(a, int):

return a + b

elif isinstance(a, str):

return a.upper()+b

print(add(1, 2))

print(add(‘head‘, ‘tail‘))

print(id(ll))

print(id(d))

print(ll is d)

print(ll is ll)

输出结果如下:

introspection.py

True

True

3

HEADtail

17718152

17742664

False

True

Process finished with exit code 0

五、什么是列表和字典推导

比如[i for i in range(10) if i % 2 == 0]

一种快速生成list/dict/set的方式,用来替代map/filter等

(i for i in range(10) if i % 2 == 0)返回生成器

a = [‘a‘, ‘b‘, ‘c‘]

b =[1, 2, 3]

# d = {‘a‘:1, ‘b‘:2, ‘c‘:3}

d = {}

for i in range(len(a)):

d[a[i]] = b[i]

print(d)

d = {k: v for k, v in zip(a,b)}

print(d)

输出结果:

compresion.py

{‘c‘: 3, ‘b‘: 2, ‘a‘: 1}

{‘c‘: 3, ‘b‘: 2, ‘a‘: 1}

六、知道python之禅吗?

Tim Peters 编写的关于Python编写的准则

import this

编程拿不准的时候可以参考

In [8]: import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren‘t special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you‘re Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it‘s a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let‘s do more of those!

Python语言基础考察点:python语言基础常见考题(一)

python有哪些软件包用来考察变量之间的相关性_Python语言基础考察点:python语言基础常见考题(一)...相关推荐

  1. python有哪些软件包用来考察变量之间的相关性_Python计算数据相关系数(person、Kendall、spearman)...

    pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数.Kendall Tau相关系数和spearman秩相 ...

  2. Python|Git remote|hosts|PyCharm常用快捷键|变量转换|命名|类型|运算符|分支|调整tab|循环|语言基础50课:学习记录(1)-项目简介及变量、条件及循环

    目录 系列目录 均引自原项目地址: Python语言基础50课简介及相关网址 修改 hosts 文件 解决 GitHub 上图片无法显示 视频资源 Python语言基础50课代码等文件资源 表1. P ...

  3. 最大信息系数——检测变量之间非线性相关性

    https://blog.csdn.net/qtlyx/article/details/50780400 最后的效果就是这样的.很明显可以看到,左下角那个有点像三角函数的关系,Pearson系数(就是 ...

  4. NLP之【点互信息PMI】——衡量两变量之间的相关性

    点互信息PMI--衡量两变量之间的相关性 绪论 一.PMI的基本概念 二.调用Python nltk来计算两个词的PMI 三.根据词语的共现频次表自定义PMI函数计算 附录:nltk.download ...

  5. 变量之间的相关性研究

    目录 1 什么是相关性? 协方差及协方差矩阵 相关系数 (1)简单相关分析 (2)偏相关分析 (3)复相关分析 (4)典型相关分析 2 对已有数据的预分析 2.1 绘制变量相关的热力图 2.2 对热力 ...

  6. 变量之间的相关性:协方差、相关系数

    协方差 方差和标准差衡量的是一个变量(一组数据)的离散程度,也就是变量和均值之间的偏离程度. 协方差衡量的是两个变量之间的相关性,如: 正相关:两个变量具有相同的变化趋势(也称同方向),要么同时变大, ...

  7. 用pwcorr命令求变量之间的相关性如何加不同的星号?

    用pwcorr命令求变量之间的相关性如何加不同的星号? pwcorr命令中的star只能加一个星号,在连玉君老师的https://gitee.com/arlionn/pwcorr_a博客连接中下载pw ...

  8. python的安装目录配置到环境变量的path当中_【转】python 环境变量配置

    2011-01-24 12:50 今天第一次做svm实验,按照pdf上的步骤一步一步来,结果在命令行中说提示"python不是内部或外部命令",师兄告诉我说没配置 python环境 ...

  9. python中复数类型的实部和虚部都是浮点数_Python合集之Python数据类型(一)

    在上一节的合集中,我们了解了Python相关的变量知识,本节我们将进一步了解一下Python中关于数据类型中的数字类型相关的知识. Python提供了数字类型用于保存数值,并且他们是不可改变的数据类型 ...

最新文章

  1. Hbase基础(特点、架构、应用场景、集群搭建、HA设计)这一篇就够了
  2. 如何在Django中以GROUP BY查询?
  3. mac地址修改_优酷路由宝救砖时MAC和无线参数及SN恢复方法
  4. boost::hana::metafunction用法的测试程序
  5. python怎么显示分数_python分数怎么表示
  6. 多项式拟合缺点_拟合多项式的最小二乘法
  7. 关于简历的一点心得(纯属个人想法,非专业人士,欢迎批评指正~)
  8. MVC中添加动作过滤器的方法
  9. 期望dp+高斯消元——bzoj3143
  10. Openstack基础八大核心组件
  11. 微信撤回消息在服务器可以看到吗,微信撤回消息可以查看了,对方撤回了什么一目了然...
  12. 计算机保密系统,计算机保密系统
  13. Matlab数字图像的傅里叶变换(FFT)
  14. 指数分布c语言,C语言下泊松分布以及指数分布随机数生成器实现
  15. 大数据之分布式协调神器:Zookeeper选举
  16. MATLAB——Simulink如何将模块进行封装
  17. 兴趣社交网络 pinterest
  18. java软件开发工程师证书考试费用,太完整了!
  19. 计算机工作室报告,e-soul计算机工作室策划书.docx
  20. ubuntu16.04搜狗输入法设置

热门文章

  1. angularjs项目的页面跳转如何实现
  2. iOS - AutoLayout
  3. npm设置http代理
  4. 全站HTTPS底层实现原理
  5. 第五章:关于ESearch的应用
  6. JQuery模拟boostrap模态框效果
  7. JS-内置对象内置构造函数事件-拖拽轮播图无缝滚动
  8. 【Vue案例三】使用v-if指令 / component标签实现组件的切换
  9. LeetCode--55.跳跃游戏(贪心,零点跳跃)
  10. 多线程编程之三——线程间通讯