windows 安装 python win10

Python英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/)是一种广泛使用的解释型高级通用编程语言。Python支持多种编程范型,包括函数式、指令式、结构化、面向对象和反射式编程。它拥有动态类型系统垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。Python由吉多·范罗苏姆创造,第一版发布于1991年,它是ABC语言的后继者,也可以视之为一种使用传统中缀表达式LISP方言[28]

python语言wiki简介

注:本篇文章适合纯入门初学者

1、下载

下载地址:https://www.python.org/

python下载界面

如下图鼠标放在Downloads上会下拉出不同平台的目录,我们直接点击Windows平台;会跳转到如下的连接地址,https://www.python.org/downloads/windows/; 在这个页面我们可以看到最新大版本的不同小版本信息(如python3.9.5 大版本就是指的3.9 ,而小版本号就是最后的那个5)

python下载windows版界面

一般对于开发人员或者数据工作者又或者产品运营自诩数据驱动的兄弟姐们在使用python的时候尽可能不要直接使用最新的版本,而是使用次新或者次次新的稳定版本,为什么呢?

一是因为任何一种语言在版本迭代的时候都都是在修复和完善历史问题或者bug,而新的版本发布后又会有新的这样那样的问题出现,致使我们这些使用者在使用的过程中体验不佳。二是我们一般在网上看到的对应语言的教程都是历史版本的使用方式和书写习惯,而新的版本可能已经做了调整,那么我们在对新版本学习和使用时可能会出现各种问题,不利于所做工作的推进。

我们可以看到在页面里有最新版和2.7的最后版本,由于历史原因2.7已经不再提供维护更新,但是由于2.X版本在python发展历史中浓墨重彩的一段历史诱发的市面上各种牛逼的第三方开源包都是基于2.X的而且也都是针对2.X做的兼容,所以2.7的包还是可以下载的。但是对于纯初学者来说尽可能还是下载3.X版本的安装包。我们选择3.7 次次新的版本。当然读者想下哪个下哪个,只要是 installer就可以,依据自己的喜好就可以,因为对于初学者都一样,玩嘛。

python下载界面微缩一览

2、安装

下载完成后,开始安装,简单明了的双击666,弹出如下图,你可以点击Install Now来直接安装,也可以点击Customize installation 来修改安装路径和一些默认配置,笔者建议,没有安装过的童鞋啥也别想直接点击Install Now

python安装包exe双击后弹出页面

3、修改安装路径

当然你可能有洁癖非要自己改一下安装的位置,就是觉得电脑默认的心理不舒服也是可以的,笔者再次建议,改位置归改位置,别那么多事儿,非得点一点这个点一点那个,看到页面没有修改路径的直接Next,等看到能改安装路径的位置了就去选择要安装的位置,最后再点Install

python修改安装路径步骤1
python修改安装路径步骤2

修改或者不修改安装路径后,点击Install开始安装,等待过程的界面如下图

python安装过程等待界面

注⚠️. 安装完了之后,如果看到如下图的Disable path length limit 的字样,点一下。然后Close

python安装成功可能出现的界面及处理方式

4、验证是否安装成功

1、在键盘上找到 

这个图标的按钮, 按它+R 弹出如下图,输入cmd, 回车,弹出的窗体输入 python -V (V要大写) ,  如果输出 Python 3.7.8 等字样,1.说明安装成功而且环境没有问题,如下图

window打开Dos命令窗口
验证python安装成功

2、如果输出是 “’python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。” 安装成不成功先不说,但是这种情况是需要配置环境变量;自己问一下度娘就可以找到解决方案,https://jingyan.baidu.com/article/fc07f989a830d012ffe5191e.html;按照环境变量的配置方式把配置改好之后再次打开一个新的 cmd(必须是新打开的,之前那个关掉),验证是否有效。

Linux-shell脚本逐行读取文件

我们在日常工作中经常会遇到读取文件的需求,一般我们用开发语言可以原生的API来简单实现对应的功能。如果我们是在Linux环境下,通过shell脚本来读取文件内容又该如何操作的呢?本篇文章旨在入门Linux-shell脚本读取文件每一行内容,代码进攻参考,非喜勿喷。

1、for 循环

function  for_fn(){
 For  i  in  `cat $FILENAME`
  do
   echo $i
  done
}

注释:这种方式是通过for循环的方式来读取文件的内容相比大家很熟悉了,这里不多说.

2、文件描述符法

Function while_read_line_fd(){
Exec 3<&0
Exec 0<$FILENAME
While read LINE
Do
Echo $LINE
Exec 0<&<3
}

注释: 这种方法分2步骤,第一,通过将所有内容重定向到文件描述符3来关闭文件描述符0.为此我们用了语法Exec 3<&0 。第二部将输入文件放送到文件描述符0,即标准输入。

3、重定向法;管道法: cat $FILENAME | while read LINE

Function While_read_LINE(){
cat $FILENAME | while read LINE
do
echo $LINE
done
}

注释:我只所有把这种方式叫做管道法,相比大家应该可以看出来了吧。当遇见管道的时候管道左边的命令的输出会作为管道右边命令的输入然后被输入出来。

4、while循环中执行效率最高,最常用的方法。

function while_read_LINE_bottm(){
While read LINE
do
echo $LINE
done  < $FILENAME
}

注释:我习惯把这种方式叫做read釜底抽薪,因为这种方式在结束的时候需要执行文件,就好像是执行完的时候再把文件读进去一样。

# 对各个方法进行测试,看那方法的执行效率最高。  ----(70000行的文件)
real    0m5.153s    method 4 (for 循环法)
real    0m5.689s    method 1  (while 釜底抽薪法)
real    0m5.853s    method 3    (标识符法)
real    0m11.612s  method 2    (管道法)

Linux-Vim/Vi命令使用技巧

在linux的世界观有这么一句话“万物皆文件”,意思是在Linux系统中所见到任何东西都是文件,都可以理解为文件,同样即可理解为你在Linux系统中看到的任务带有名称的东西,不管其是什么格式的,你都可以像对待纯文本文件一下打开它,当然打开后看到的内容肯定是会不同格式而不同的。打开文件当然需要能打开文件的命令来操作,Vim或者vi就是打开文件的命令。

Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是VIMitation,随着功能的不断增加,正式名称改成了VIMproved。现在是在开放源代码方式下发行的自由软件

wiki上对Vim的基本介绍

1、主要基本模式

  • 命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本—-查看文件内容
  • 插入(Insert)或编辑模式: 修改文本
  • 扩展命令(extended command )模式: 保存,退出等

2、在 Vim 中设置 Tab

为什么要设置vim的tab缩进,这个主要还是一些语言自身的格式要求(如python),还有就是为了视觉美观。缩进用 tab 制表符还是空格,这不是个问题,就像 python 用四个空格来缩进一样,这是要看个人喜好的。在 Vim 中可以很方便的根据不同的文件类型来设置使用 tab 制表符或者空格,还可以设置长度,非常灵活。

登录linux系统后,在光标闪动的地方输入: cd , 然后回车; 然后输入命令 vim ~/.vimrc

首先来看如何设定 tab 的宽度以及如何确定用 tab 制表符还是空格来表示一个缩进:

set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab / expandtab

说明: 
其中 tabstop 表示一个 tab 显示出来是多少个空格的长度,默认 8。softtabstop 表示在编辑模式的时候按退格键的时候退回缩进的长度,当使用 expandtab 时特别有用。shiftwidth 表示每一级缩进的长度,一般设置成跟 softtabstop 一样。当设置成 expandtab 时,缩进用空格来表示,noexpandtab 则是用制表符表示一个缩进。

当然,除了基本的配置还有很多比较进阶配置,比如自动代码补全,换行缩进等

vim 小进阶配置
set nu
set tabstop=4
set ruler
set autoindent
set cindent
set smartindent
set laststatus=2
set softtabstop=4
set shiftwidth=4
syntax enable

set tags+=~/.vim/tags/cpp_src/tags ” 设置tags搜索路径

map <C-n> :NERDTree<CR>
map <C-t> :TlistToggle<CR>

” pathongen
execute pathogen#infect()
syntax on
filetype plugin indent on

” taglist
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
let Tlist_Sort_Type=”name”
set completeopt=longest,menu

“youcompleteme
“回车即选择当前项
inoremap <expr> <CR> pumvisible() ? “\<C-y>” : “\<CR>”
” 跳转到定义处
let mapleader =”\<space>”
nnoremap <leader>jj :YcmCompleter GoToDefinitionElseDeclaration<CR>

let g:miniBufExplMapWindowNavVim = 1
let g:ycm_global_ycm_extra_conf=’~/.vim/bundle/youcompleteme/.ycm_extra_conf.py’
let g:ycm_error_symbol = ‘>>’
let g:ycm_warning_symbol = ‘>*’
“” 不显示开启vim时检查ycm_extra_conf文件的信息
let g:ycm_confirm_extra_conf=0
“开启基于tag的补全,可以在这之后添加需要的标签路径
let g:ycm_collect_identifiers_from_tags_files= 1
“”注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
” 输入第 2 个字符开始补全
let g:ycm_min_num_of_chars_for_completion= 2
” 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=1
“” 开启语义补全
let g:ycm_seed_identifiers_with_syntax= 1
“在注释输入中也能补全
let g:ycm_complete_in_comments = 1
“”在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
” 设置在下面几种格式的文件上屏蔽ycm
let g:ycm_filetype_blacklist = {‘tagbar’ : 1,’nerdtree’ : 1,}
“youcompleteme 默认tab s-tab 和 ultisnips 冲突
let g:ycm_key_list_select_completion = [ ‘<Down>’ ]
let g:ycm_key_list_previous_completion = [ ‘<Up>’ ]
“修改对C函数的补全快捷键,默认是CTRL + space,修改为ALT + ;
let g:ycm_key_invoke_completion = ‘<C-Space>’
vim 代码补全,换行缩进配置

3、常用快捷键

1、最基本命令
空格键 向右移动一格
x 删除后面的字符 X 删除前一个字符  删除3个字符就是3x  
dd:删除一行   D 删除到行尾 
caw:改写单词  c 相当于 d 变为编辑模式
J:删除换行符,使下一行并上来。     nJ:连接后面的n行
u:撤销上一次操作      U:撤销当前行的所有修改
ctrl+r:对撤消的撤消
i 在光标前插入
I 在行首插入 
a 在光标后插入
A 在行末插入
o:在当前行的下面另起一行,并变为插入模式
O:在当前行上面另起一行,变为插入模式
Ctrl+o:临时变成命令模式(一次而已)
:e!:放弃更改,然后相当于重新打开
:help:帮助,可用ZZ退出帮助窗口
基本命令
2、复制命令
vim中Nyy可以复制光标后的N行。有时我们不容易得出行数,这时可以用做标记的方法来制定复制范围: 
  1. 在开始行上输入ma作一个标记a 
  2. 移动到结束行,输入y’a会复制当前行到标记a之间的文本。d’a会删除。 
或者是v进入可视模式,再13G跳转到相应行,y即可。
:10,20y    回车即可,相应的删除也是如此     :10,20d     (此方法比上面两种方法更简单)
:10,20 m 30    把10行到20行的内容,剪切到30行之后
:10,20 co 30   把10行到20行的内容,复制到30行之后
将光标放在 { 处,然后输入v%就可以把大括号中内容选定
如果光标放在第一个s上,想删除到“(”为止,则输入dt(就可以了,t(的作用是跳到下一个”(“前。
ctrl +n 自动补全 ctrl + p 也一样
:ab hw hello world  用一个缩写字符串代替一个长的字符串,此处用 hw 代替 hello world
%: 移动到与制匹配的括号上去(),{},[],<>等
‘ 移动到上一次的修改行
fx 向右跳到本行字符x处(x可以是任何字符)
Fx 向左跳到本行字符x处(x可以是任何字符)
tx 和fx相同,区别是跳到字符x前
Tx 和Fx相同,区别是跳到字符x后
# 到与当前单词相同的上一个单词上, * 到与当前单词相同的下一个单词上
如果你要重复键入一个短语或一个句子, 也有一种快捷的方法。Vim有一种记录宏的机制。你键入”qa”开始把一段宏记录入寄存器变量`a’中。
按下来你可以象平常一样键入你要的操作, 只是这些操作都会被Vim记录进它命名为`a’的宏中, 再次再下”q”键, 就结束了宏`a’的录制。当你要重复执行你刚才记录的那些操作时只要使用”@a”命令。共有26个可用的寄存器供你记录宏。 使用宏你可以重复多个不同的操作。而不仅仅是插入文本了。如果你要进行某种重复的操作, 记着要用这一招呀。
:abbr hte the
:abbr hw Hello World
输入先面的单词时,自动用后面的替换。
复制命令
3、移动命令
b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。
$:移动到行尾  3$:移动到3行后的行尾
^:移动到行首,0也是
+:移到下一行的行首
-: 移到上一行的行首
f:搜索命令,小写时向后搜索(用来定位)如 fx:定位到下一个x上。   Fx:定位到上一个x上,重复时,可用;或,  不过 , 表示反方向
%:跳到相对应的括号上,编程时常用
33G:跳转到33行   此时按“可以返回到原来行
gg:文件头   G: 文件尾
30%:跳转到文件的30%处
“H”意为Home, “M”为Middle, “L”为Last.  当前屏幕的上中下位置,大小写皆可
Ctrl+G:显示当前位置
set number:设置显示行号,set nonumber:关闭显示
:set ruler 设置在窗口右下角显示行号,与上面的好处是,节省空间
ctrl+u\d  向上\下滚动半屏
ctrl+e\y  向上\下滚动一行
ctrl+b\f  向上\下滚动一屏  这个比较实用,记住。
zz:将当前行滚动于屏幕中间,方便查看上下文  zt置顶,zb置尾
/string  查找string,回车后,按n键可以跳到下一个,N上一个,另外按/键后,按上下键可以找到以前查找的记录,同样的 :也有记录
?/string 同上,默认向上查找
:set ignorecase 大小写无关
:set noignorecase 大小写敏感
* :查找下一个光标所在单词  #是查找上一个
:set hlsearch  高亮显示查找结果
:set nohlsearch  取消高亮
:nohlsearch  去掉当前显示的高完(一次性)
 “ 上次光标停靠的行
% 匹配到相应括号处
>>   向右移动本行一段距离     <<   向左移动本行一段距离    3<<    把下面3行(包括本行),向左移动一段距离     :20,30>>  把20行到30行向右移动一段距离
移动命令
4、小幅改动命令
:%s/str1/str2/g   替换每一行的 str1为 str2
:10,20s/str1/str2/g   替换从行10到行20之间的 str1为 str2
:10,$s/str1/str2/g   替换从行10到最后一行之间的 str1为 str2
:s/str1/str2/g   替换当前行的 str1为 str2
.  重复执行命令 
:10,$ w test2.cpp     取行10到最后一行内容,保存到test2.cpp
:r class/User.hpp    读取文件中的内容,插入到当前行的后面
dw:删除一个单词(光标后部分)  不如:daw实用    d4w:删除4个单词    d$:删除当前光标到行尾    d^:删除当前光标至行首       d换成c效果是一样的,只是操作完会变成insert模式   dnw: 删除N个单词   dnj: 向下删除n行      dnk: 向上删除n行 
X:删除左边的字符,相当于<-键,x删除当前字符  D:相当于d$  C:相当于c$  s:相当于c1  S:相当于cc
r:替换当前字符,但不会进入insert模式    3r:把后面3个字符替换掉    R:替换模式
.:重复上一次操作
v:进入Visual模式    V:进入可视行模式,比如 Vjjd 删除3行  Ctrl+v:可视块模式
P:粘贴至光标前    p:粘贴至光标后    3P:粘贴3次      “2p     粘贴最后第二次的删除的内容
yy:复制一行  yaw: 复制一个单词,光标在单词任意位置    ynw: 复制N个单词       ynj: 向下复制n行          ynk: 向上复制n行  
自动缩进:
:set cindent(所有的set都可以简写为se,虽然只节省了一个字符, 译者注) 需要注意的是cindent控制缩进量是通过shiftwidth选项的值, 而不是通过tabstop 的值, shiftwidth的默认值是8(也就是说, 一个缩进为8个空格, 译者注), 要改变默认的设置, 可以使用”:set shiftwidth=x”命令, 其中x是你希望一个缩进量代表的空格的数目.
 { = 到前一个空行上
} = 到下一个空行上
小幅改动命令
5、滚屏和移动
^f:向前(下)一整屏
^b:向后(上)一整屏
^d:向前(下)一半屏
^u:向后(上)一半屏
z,Enter:将光标所在行移动到屏幕顶部(同于zz)
z.:将光标所在行移动到屏幕中间
z-:将光标所在行移动到屏幕尾部
nz,Enter:将第n行移动到屏幕顶部,同样的,z. 与 z- 前也可以加数字。
 
在屏幕中移动:
H、M、L分别移动到屏幕的顶部、中间和尾部。
nH、nL 移动到距离屏幕顶部和顶部n行的位置。
滚屏和移动