python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)

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

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

不要傻傻分不清

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

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

若类型语言

20190726172419435953.png

强类型语言

20190726172419644945.png

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!

原文地址:https://www.cnblogs.com/luoahong/p/11251661.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国计算机等级考试题库二级C操作题100套(第42套)

第42套: 给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:de…

不同的编译器:GCC G++ C C++的区别

gcc 是c的编译器,g是c的编译器。cc一般是一个符号连接,指向gcc。CC一般是makefile里面的一个名字,具体是什么根据实际情况决定。gcc和g都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g只能编译c代码两者都可以,但是请注意&…

python 3.8.0安卓_Python 3.8.0稳定版正式发布

IT之家 10月15日消息 Python是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。Python 3.8.0稳定版现已正式发布,带来了许多新特性和优化…

全国计算机等级考试题库二级C操作题100套(第43套)

第43套: 给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回-1。ss所指字符串数组中共有N个内容不…

网站开发中JS中的常用语句

1.document.write( " "); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document- >html- >(head,body) 4.一个浏览器窗口中的DOM顺序是:window- >(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElement…

由于开发者通过接口修改了菜单配置_开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?...

从用户的视角来感受一个开源项目的成长,是我们推出「开发者说」专栏的初衷,即在开发者进行开源项目选型时,提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿,本文是「开发者说」的第9篇,作者郑扬勇&#xff0…

BZOJ1045 HAOI2008糖果传递(贪心)

显然最后每个小朋友所拥有的糖果数就是糖果数总和的平均数。设该平均数为t。 环的问题一般断成链,但这个题似乎没有什么很好的办法在枚举断点的时候快速算出答案(我甚至不知道会不会有断点) 于是我们假装把他断开了。假装现在我们已经知道了1…

java中的 请求体_在spring mvc test中访问请求体和请求头

我创建了一个spring boot应用程序,这就是我的控制器的样子 . 我使用postman在请求体中发送json,在请求头中发送一个字符串,然后进一步散列json并将其与请求头获取的字符串进行比较 . 问题是我不知道获取请求体和请求头以便使用MockMvc测试相应…

Java 多线程(三) 线程的生命周期及优先级

Java 多线程(三) 线程的生命周期及优先级 线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程。 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: …

eclipse 导入maven项目_手把手的Spring Boot Web 项目教程,Hello Spring Boot

在开始之前,我们需要去创建一个SpringBoot项目,大家可以去 http://start.spring.io/ 这个网站生成一个项目。如图,这边可以对SpringBoot项目进行详细设置:下面这个web一定要勾选:SpringBoot版本号选择1.5.10全部设置好…

优雅降级和渐进增强

作为一名前端开发人员,最头疼的莫过于浏览器兼容。远古时期万恶的IE6,到现在CSS3不兼容的IE7/8.为了保证不同版本浏览器都有共同或更优化的用户体验,前端搬砖的我们不得不与浏览器兼容顽强斗争。而渐进增强和优雅降级两种不同的开发流程&…

全国计算机等级考试题库二级C操作题100套(第44套)

第44套: 函数fun的功能是进行数字字符转换。若形参ch中是数字字符’0’~’9’, 则 ‘0’转换成’9’,‘1’转换成’8’,‘2’转换成’7’,……,‘9’转换成’0’;若是其它字符则保持不变;并将转…

ASP.Net中实现中英文复合检索文本框

前段时间,写一个用户部门的管理页面,需要对后台获取的用户数据实现英汉检索功能。  同时,选定一个选项之后,需要触发事件与后台交互,将该用户所在的部门显示到页面右边的ListBox控件中。 一、Dojo的FilteringSelect组…

sklearn 安装_初识sklearn

我的主业是互联网运营,业余的python爱好者,学习python已经快两年,主攻网络爬虫与数据分析,爬虫能使用代理ip、打码平台、OCR识别、基本的js逆向处理反爬;数据分析主要使用pandas与pyecharts进行可视化,我的…

2018.08.02 hdu1558 Segment set(并查集+计算几何)

传送门 这个直接用并查集维护。 每加入一条线段就将它与其他能相交的集合合并&#xff0c;维护一个sizesize域表示每个集合的大小。 代码&#xff1a; #include<bits/stdc.h> #define eps 1e-15 using namespace std; int t,fa[1005],n,siz[1005],cnt; struct pot{dou…

全国计算机等级考试题库二级C操作题100套(第45套)

第45套&#xff1a; 函数fun的功能是&#xff1a;把形参a所指数组中的偶数按原顺序依次存放到a[0]、 a[1]、a[2]、……中&#xff0c;把奇数从数组中删除&#xff0c;偶数个数通过函数值返回。例如&#xff1a; 若a所指数组中的数据最初排列为&#xff1a;9、1、4、2、3、6、5…

java singleton inner class_关于java:Singleton设计模式实现

我看到了不同种类的singleton类实现。然而&#xff0c;这个特定的实现&#xff1a;https://sourcemaking.com/design_patterns/singleton/java/1不在私有构造函数中创建对象。有人能解释一下&#xff0c;这两种实现之间的优缺点是什么吗&#xff1f;给出的描述是最小的&#xf…

python中import os_python import osgeo.gdal出错

用anaconda安装的python和各种包&#xff0c;linux和windows下都有&#xff0c;其中前者是2.7版本&#xff0c;而后者是3.x&#xff0c;用conda install gdal安装gdal包之后&#xff0c;当运行from osgeo import gdal​时出现了各种问题。 windows下的问题​ ​ImportError Tra…

全国计算机等级考试题库二级C操作题100套(第46套)

第46套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序&#xff0c;并输出排序结果。ss所指字符串数组中共有N个字符串&#xff0c;且串长小于M。 请在程序的下划线处填入正确的内容并把下…

java删除一级域名下cookie_java操作cookie示例(删除cookie)

1.设置Cookie代码如下:Cookie cookie new Cookie("key", "value");cookie.setMaxAge(60);设置60秒生存期&#xff0c;如果设置为负值的话&#xff0c;则为浏览器进程Cookie(内存中保存)&#xff0c;关闭浏览器就失效。代码如下:cookie.setPath("/tes…