真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

lens函數(shù)python len函數(shù)python用法

如何用 Python 給 Vim 寫插件

vim中執(zhí)行python命令

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),浙江企業(yè)網(wǎng)站建設(shè),浙江品牌網(wǎng)站建設(shè),網(wǎng)站定制,浙江網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,浙江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

在vim中可以使用py[thon] {stmt}來執(zhí)行python語句{stmt},你可以用:python print "Hello World!"來驗(yàn)證一下。

只能執(zhí)行一條語句,沒什么用,不是嗎?所以有更加強(qiáng)大的接口,語法如下:

py[thon] {endmarker}

{script}

{endmarker}

!-- more --

這樣我們就可以執(zhí)行python腳本{script}中的內(nèi)容了。{endmarker}是一個標(biāo)記符號,可以是任何內(nèi)容,不過{endmarker}后面不能有任何的空白字符。看一個簡單的例子,假設(shè)下面代碼保存為script_demo.vim:

function! Foo()

python EOF

class Foo_demo:

def __init__(self):

print 'Foo_demo init'

Foo_demo()

EOF

endfunction

那么在vim中我們先用:source path_to_script/script_demo.vim來加載腳本,然后就可以用:call Foo()來運(yùn)行python腳本了,整個過程如圖所示:

此外,我們還可以將python腳本放到一個單獨(dú)的.py文件中,然后用pyf[ile] {file}來運(yùn)行python文件中的程序,要注意這里pyf[ile]后面的所有參數(shù)被看做是一個文件的名字。

vim模塊

我們已經(jīng)可以在vim中執(zhí)行python命令了,但是python怎么獲取vim中的一些信息呢?比如說我想知道vim當(dāng)前緩沖區(qū)一共有多少行內(nèi)容,然后獲取最后一行的內(nèi)容,用python該怎么做呢?

于是vim提供了一個python模塊,有趣的是模塊名字就叫做vim,我們可以用它來獲取vim編輯器里面的所有信息。上面問題用以下python腳本就可以解決了:

function! Bar()

python EOF

import vim

cur_buf = vim.current.buffer

print "Lines: {0}".format(len(cur_buf))

print "Contents: {0}".format(cur_buf[-1])

EOF

endfunction

你可以自己加載腳本運(yùn)行一下見證奇跡!上面代碼出現(xiàn)了vim.current.buffer,想必你已經(jīng)從名字猜到了它的意思了,不過還是來詳細(xì)看下吧:

vim模塊中的常量

vim.buffers: 用來訪問vim中緩沖區(qū)的列表對象,可以進(jìn)行如下操作:

:py b = vim.buffers[i] # Indexing (read-only)

:py b in vim.buffers # Membership test

:py n = len(vim.buffers) # Number of elements

:py for b in vim.buffers: # Iterating over buffer list

vim.windows: 用來訪問vim中窗口的列表對象,和vim.buffers支持的操作基本相。

vim.current: 用來訪問vim中當(dāng)前位置的各種信息,比如:

vim.current.line

vim.current.buffer

vim.current.window

vim.current.tabpage

vim.current.range

vim.vvars: 類似字典的對象,用來存儲global(g:)變量或者vim(v:)變量。

還有其他的一些常量,這里不做敘述。注意這里的常量并不是真正意義上的常量,你可以重新給他們賦值。但是我們應(yīng)該避免這樣做,因?yàn)檫@樣會丟失該常量引用的值?,F(xiàn)在為止我們已經(jīng)能獲取vim中數(shù)據(jù),然后用python來對其進(jìn)行操作,似乎完美了。

不過vim并沒有止步于此,它可是Stronger than Stronger!因?yàn)槲覀兛梢栽趐ython里使用vim強(qiáng)大的命令集,這樣就可以用python寫一些常用的批處理插件,看下面簡單的例子:

function! Del(number)

python EOF

import vim

num = vim.eval("a:number")

vim.command("normal gg{0}dd".format(num))

vim.command("w")

EOF

endfunction

可以調(diào)用上面函數(shù)Del(n)用來刪除當(dāng)前緩沖區(qū)前n行的內(nèi)容(只是示例而已,現(xiàn)實(shí)中別這么做?。┥厦嬗玫搅薳val和command函數(shù),如下:

vim模塊中兩個主要的方法

vim.command(str): 執(zhí)行vim中的命令str(ex-mode,命令模式下的命令),返回值為None,比如:

:py vim.command("%s/aaa/bbb/g")

也可以用`vim.command("normal "+str)`來執(zhí)行normal模式下的命令,比如說用以下命令刪除當(dāng)前行的內(nèi)容:

:py vim.command("normal "+'dd')

vim.eval(str): 用vim內(nèi)部的解釋器來計算str中的內(nèi)容,返回值可以是字符串、字典、或者列表,比如計算12+12的值:

:py print vim.eval("12+12")

將返回結(jié)算結(jié)果24。

前面的Del函數(shù)還提供了一個number參數(shù),在vimL里面可以通過let arg=a:number來使用,在python中通過vim.eval("a:number")來使用。也可以通過參數(shù)位置來訪問,比如let arg=a:0或者是vim.eval("a:0")。我們可以使用"..."來代替命名參數(shù)來定義一個能接收任意數(shù)量參數(shù)的函數(shù),不過這樣只能通過位置來訪問。

vim模塊還提供了一個異常處理對象vim.error,使用vim模塊時一旦出現(xiàn)錯誤,將會觸發(fā)一個vim.error異常,簡單的例子如下:

try:

vim.command("put a")

except vim.error:

# nothing in register a

vim模塊提供的對象

到這里你基本能用python來對緩沖區(qū)進(jìn)行基本的操作,比如刪除行或者是在指定行添加內(nèi)容等。不過在緩沖區(qū)添加內(nèi)容會很不pythoner,因?yàn)槟愕檬褂胏ommand來調(diào)用vim的i/I/a/A命令。好在有更科學(xué)的方式,那就是利用vim模塊提供的對象來進(jìn)行操作,看下面簡單的例子:

function! Append()

python EOF

import vim

cur_buf = vim.current.buffer

lens = len(cur_buf)

cur_buf.append('" Demo', lens)

EOF

endfunction

Append函數(shù)在當(dāng)前緩沖區(qū)的結(jié)尾添加注釋內(nèi)容" Demo,緩沖區(qū)對象是怎么一會兒事呢?

緩沖區(qū)對象

vim模塊提供了緩沖區(qū)對象來讓我們對緩沖區(qū)進(jìn)行操作,該對象有兩個只讀屬性name和number,name為當(dāng)前緩沖區(qū)文件的名稱(包含絕對路徑),number為緩沖區(qū)的數(shù)量。還有一個bool屬性valid,用來標(biāo)識相關(guān)緩沖區(qū)是否被擦除。

緩沖區(qū)對象有以下幾種方法:

b.append(str): 在當(dāng)前行的下面插入新的行,內(nèi)容為str;

b.append(str, n): 在第n行的下面插入新的行,內(nèi)容為str;

b.append(list)

b.append(list, n): 插入多行到緩沖區(qū)中;

b.range(s,e): 返回一個range對象表示緩沖區(qū)中s到e行的內(nèi)容。

注意使用append添加新行str時,str中一定不能包含換行符"\n"。str結(jié)尾可以有"\n",但會被忽略掉。

緩沖區(qū)對象的range方法會返回一個range對象來代表部分的緩沖區(qū)內(nèi)容,那么range對象又有那些屬性以及方法呢?

其實(shí)在操作上range對象和緩沖區(qū)對象基本相同,除了range對象的操作均是在指定的區(qū)域上。range對象有兩個屬性start和end,分別是range對象的起始和結(jié)尾行。它的方法有r.append(str),r.append(str,

n)和r.append(list),r.append(list, n)。

我們可以通過vim.windows來獲取vim中的窗口對象,我們只能通過窗口對象的屬性來對其進(jìn)行操作,因?yàn)樗鼪]有提供方法或者其他接口來操作。其中只讀屬性有buffer、number、tabpage等,讀寫屬性有cursor、height、width、valid等。具體可以查看幫助:h python-window

python 代碼問題

start_new_thread(function, (arg1,args2,...))

第一個參數(shù)是一個函數(shù)

thread.start_new_thread(loop(i,loops[i],locks[i]),())

這樣的話,第一個參數(shù)是一個loop函數(shù)調(diào)用后的返回值,因?yàn)闆]有返回,所以就是一個None

用Python編寫一個,輸入一個四位整數(shù),求它的千位,百位,十位,個位各是多少

#!/usr/bin/env python

# -*- coding: utf-8 -*-

a = input()

print "千位是: %s" % str(a)[0]

print "百位是: %s" % str(a)[1]

print "十位是: %s" % str(a)[2]

print "個位是: %s" % str(a)[3]

當(dāng)運(yùn)行程序時,在控制臺輸入2345,輸出結(jié)果是:

千位是: 2

千位是: 3

千位是: 4

千位是: 5

擴(kuò)展資料

1、python輸入用法介紹:

python輸入時使用input( )函數(shù),這個函數(shù)只能接收“數(shù)字”的輸入,返回所輸入的數(shù)字的類型( int, float )。示例:

a = input("input a: ")

print(a,type(a))

2、python字符串切割:

python中string字符串使用[]可以通過索引獲取字符串中字符,例如:

a = "Hello"

print "a[1] 輸出結(jié)果:", a[1]

a[1] 輸出結(jié)果: e

怎么用python定義一個讀文件每行長度的函數(shù)

def?f():

lines=open("1.txt","r").readlines()

lens=[]

for?line?in?lines:

lens.append(len(line.strip('\n')))

lens存的每行長度


網(wǎng)站名稱:lens函數(shù)python len函數(shù)python用法
網(wǎng)址分享:http://weahome.cn/article/dogjgpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部