Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)

Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)

一、数据运算

Python数据运算感觉和C++,Java没有太大的差异,百度一大堆,这里就不想写了。比较有意思的是三元运算,记得C++和Java都有这个。。。

1 a,b,c = 1,3,5
2 d = a if a<b else c
3 d

可以看到:如果条件成立返回a,否则返回c。

二、bytes数据类型

原文:http://eli.thegreenplace.net/2012/01/30/the-bytesstr-dichotomy-in-python-3

Python 3 中最重要的新特性可能就是将文本(text)和二进制数据做了更清晰的区分。文本总是用unicode进行编码,以str类型表示;而二进制数据以bytes类型表示。

Python 3 中不能以任何隐式方式将str和bytes类型二者混合使用。不可以将str和bytes类型进行拼接,不能在str中搜索bytes数据(反之亦然),也不能将str作为参数传入需要bytes类型参数的函数(反之亦然)。

字符串和字节符之间划分界线是必然的,图解要牢记:

二级制数据除了用于保存视频、音频等文件外;在Python 3.x 网络编程中有重要作用,网络编程数据传输使用的正是二级制数据。

1 msg = "我爱你啊,祖国!".encode('utf-8')
2 msg
3 msg.decode('utf-8')

三、.pyc文件是什么鬼,说好的解释型语言呢?

初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?

其实,随着Java等基于虚拟机的语言的兴起,解释型和编译型语言的界限变得越来越模糊。

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

例如Java执行程序的命令:

              javac hello.java

              java hello

Python执行的也是类似操作,只不过不需要用户显式调用!

Python的大致运行过程如下:

       当Python程序第一次运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到.pyc文件中。

       当Python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

       对于程序修改的问题,Python其实是检查.py文件和.pyc文件的时间戳,已新的为准!(自己没查过源码,道听途说。)

       所以我们应该这样来定位PyCodeObject和.pyc文件,我们说.pyc文件其实是PyCodeObject的一种持久化保存方式。

 

posted on 2018-08-27 13:27 104cz 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/104cz/p/9541703.html

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

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

相关文章

javascript --- 实战中体会jsonp

准备:1.需要node环境,node环境配置 -> 百度搜索 “node环境配置” (网上太多了) node是否安装成功指令如下: 创建如下页面结构: html结构如下: // jsonp.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">…

2 中间件的使用、异步action的创建

react-redux是react插件 将所有组件分成两大类&#xff1a;UI组件和容器组件 安装npm install react-redux -S UI组件&#xff1a; 只负责UI的呈现&#xff0c;不带有任何业务逻辑不使用this.state所有数据都由this.props提供不使用任何Redux的API&#xff0c;不需要使用store …

1 State Hook

Hook&#xff0c;使用在函数组件中不要在循环&#xff0c;条件或嵌套函数中(if、switch、for)调用 Hook 1. 函数指向相同的引用 更新方式&#xff1a;函数组件中state变化时才重新渲染&#xff08;React使用Object.is比较算法来比较state&#xff09;&#xff1b;而类组件每次…

⊰第五篇⊱ 队列

队列&#xff08;queue&#xff09;是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。 队列是一种先进先出的&#xff08;First In First Out&#xff09;的线性表&#xff0c;简称FIFO。允许插入的一端为队尾&#xff0c;允许删除的一端为队头。队列不…

node --- 实践中理解跨域

经常可以见到.说解决跨域只要返回加上"Access-Control-Allow-Origin"头部就行… 下面从实践中一步一步的理解. 1.环境准备: 1. node.js (http://nodejs.cn/) 自行下载配置, 完毕后(cmd)输入 node --version 若显示版本号则代表成功// ps: node(中的npm)方便下载资源…

2 Effect Hook

副作用&#xff1a;和外部有交互 引用外部变量调用外部函数修改dom、全局变量ajax计时器&#xff08;依赖window.setTimeout&#xff09;存储相关 纯函数&#xff1a;相同的输入一定会得到相同的输出 Effect Hook可以让你在函数组件中执行副作用操作 类组件中处理副作用 在com…

【JUC】CountDownLatch

因为在调用端的异步中&#xff0c;需要调用其他多个服务获取数据再汇总结果返回&#xff0c;所以用到了CountDownLatch CountDownLatch的概念 CountDownLatch是一个同步工具类&#xff0c;用来协调多个线程之间的同步&#xff0c;或者说起到线程之间的通信&#xff08;而不是用…

node --- Missing write access to 解决

今天在使用npm安装animate.css时报错… 大体原因是没有对node_modules没有写的权限. 百度查到是要删除对应的node_modules然后在安装… 但是我并不想这样做…想起前面我为了加快下载速度,好像使用的是cnpm… 于是我使用了nrm ls 查看当前使用的源 更换npm的源可以参考 https:…

vue踩坑- 报错npm ERR! cb() never called!

在vue项目中引入饿了么elementUI组件的步骤之中&#xff0c;出现以下的错误&#xff1a; D:\my-project-first>npm i element-ui -S Unhandled rejection RangeError: Maximum call stack size exceededill install loadIdealTreeat RegExp.test (<anonymous>)at D:\n…

maven之阿里云Maven镜像的使用

Maven中央仓库在国外&#xff0c;速度比较慢&#xff0c;所以我们采用国内的镜像&#xff0c;速度回有质的提升。 配置下setting.xml <mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/ne…

基于openstack搭建百万级并发负载均衡器的解决方案

最近&#xff0c;喜欢研究一些国外技术大咖们的文章&#xff0c;而这篇文章是基于openstack负载均衡器的解决方案&#xff0c;做的一些总结~希望能够给小伙伴带来一些灵感或者帮助。 openstack现有的负载均衡解决方案&#xff0c;无论是lbaas plugin还是octavia&#xff0c;后端…

5 useMemouseCallback

useMemo 优化渲染 现象 App每次重新执行时&#xff0c;render变化了&#xff0c;引用的render不是同一个函数 import React, { useState, } from "react"; const Foo props > {return <ul>{props.render()}</ul> } function App() {const [range…

6 useRef、useImperativeHandle

useRef在每次执行时返回的是同一个引用&#xff08;返回的ref对象在组件的整个生命周期内保持不变&#xff09;在函数组件中可以使用useRef和createRef但useRef性能比createRef好&#xff0c;快在类组件中&#xff0c;createRef是在初始化constructor时被赋值的&#xff08;执行…

vue --- 列表(v-for渲染)的各种神仙动画效果

通过v-for生成的元素,使用transition包裹将只显示第一条数据,此时需要使用transition-group包裹. <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…

linux命令目录

一、文件和目录。&#xff08;文件目录的增删改查&#xff09; lspwdcdmkdirtouchrmdirlnddrmcpmvnlcattacmorelessheadtailstat###########################################grepawksed findlocatewhichwhereiswc ############################################dfdumountumoun…

vue --- 使用component的 :is属性切换标签页

点击对应的标签,下面切换至对应的模板… // 说明 <component :is"name"></component> // 相当于把id为name的组件放到对应的位置总体代码如下: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"…

7 useLayoutEffect、useDebugValue

useEffect&#xff1a;dom完成渲染后执行 不传参数&#xff0c;每次都会执行 传空的依赖[]&#xff0c;只会执行一次 有依赖&#xff0c;依赖项变化会执行 useEffect实现动画效果 import { useEffect, useRef, useState } from "react"const App () > {const [,…

es6 --- map的使用

思路: 1.使用一个map数组来保存nums1中出现的元素及其次数. 2.遍历nums2.使用map的has方法来检测nums2中的元素是否出现在map中,若出现则加入返回数组(retArr),且map数组中的次数减1 /*** param {number[]} nums1* param {number[]} nums2* return {number[]}*/ var intersect…

前端面试之Vue相关总结

Vue2中检测数组变化的限制和解决方法 vue2用下标设置数组没效果 arr [1,2] arr[0] 0,页面上显示的arr并没有修改(如果对应下标是原始值&#xff1b;若是引用值)解决1&#xff1a;Vue.Set解决2&#xff1a;arr.splice (Vue会劫持splice方法) Vue2对对象是循环defineProperty…

vue --- ref属性获取dom元素和子组件的方法

说明: // 假设login的组件定义如下: Vue.component(login, {template:<h1>登录</h1>,data(){return {msg:son msg,}},methods(){show(){console.log(调用子组件的方法);}} }) // 在父元素中使用 <div id"app"><login ref"myLogin"&g…