python数组参数
A. python的urllib如何POST传递数组参数
1.如果机器上安装了 Python 的 setuptools,可以通过下面的命令来安装 poster:
easy_install poster
# test_client.pyfrom poster.encode import multipart_encodefrom poster.streaminghttp import register_openersimport urllib2# 在 urllib2 上注册 http 流处理句柄register_openers()# 开始对文件 "DSC0001.jpg" 的 multiart/form-data 编码# "image1" 是参数的名字,一般通过 HTML 中的 <input> 标签的 name 参数设置# headers 包含必须的 Content-Type 和 Content-Length# datagen 是一个生成器对象,返回编码过后的参数datagen, headers = multipart_encode({"image1": open("DSC0001.jpg", "rb")})# 创建请求对象request = urllib2.Request("http://localhost:5000/upload_image", datagen, headers)# 实际执行请求并取得返回print urllib2.urlopen(request).read()
很简单,文件就上传完成了。
2.其中那个 register_openers() 相当于以下操作:
from poster.encode import multipart_encodefrom poster.streaminghttp import StreamingHTTPHandler, StreamingHTTPRedirectHandler, StreamingHTTPSHandlerhandlers = [StreamingHTTPHandler, StreamingHTTPRedirectHandler, StreamingHTTPSHandler]opener = urllib2.build_opener(*handlers)urllib2.install_opener(opener)
3.另外,poster 也可以携带 cookie,比如:
opener = poster.streaminghttp.register_openers()opener.add_handler(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))params = {'file': open("test.txt", "rb"), 'name': 'upload test'}datagen, headers = poster.encode.multipart_encode(params)request = urllib2.Request(upload_url, datagen, headers)result = urllib2.urlopen(request)
B. 怎样用python将数组里的数从高到低排序
1、首先我们定义一个列表输入一串大小不一的数字。
C. python如何定义数组
Python数组还有一个变态的使用方法,就是调用时可以不按参数顺序,对于我们掌握怎样正确创建Python数组是很有帮助的,而且也可从中学到不少编程技巧,例如委托和模板方法。希望大家一起研究下。在ubuntu中,更加是必须的一种脚本引擎,所以有必要去学习一下,这里的文章只针对有一定编程基础,最好是比较熟悉php或javascript的用户,如果没任何基础的新手建议找更详细的教程去学习。Python数组的变量是不需要定义的,这方面和php一样,它比javascript还是宽松,不过它是用缩进作为段落标识的,作为习惯了C语言风格语法的人,可能一开始会很不习惯使用。但细一想,其实也是很正常,很合理的。虽然Python在面向过程/面向对象方面也是很宽松,但实际上一般的程序都是一个主入口。然后不断调用其它类库或函数,所以用缩进的方式并无不妥,那样一方面要求用户写代码时要规范,另一方面反向省去了多余的{}。与C语言风格相比,Python主要语法特点而下:变量、字符串在python中,所有变量都是对象,数组其实是一个链表,并且可以进行相应的链表操作。对于普通数据类型,定义/赋值方法都是一样的,这里不作介绍,python的字符串方面有些特别,这里介绍一下。python对字符串用
[']["]
括起含义是一样的,同样对特殊字符使用
[\]
进行转义不过它有一个很特别的语法就是:[''']三引号,它用于括起分多行的字符串,实际是这也可以作为它的多行注解,如:#!/usr/bin/python
#python
source
class
python:
def
Hello(self):
print
'Hello'
def
count(n):
in=0
while(in<=n):
inin=in+1
print
in
//buile
by
G++
or
VC++
//C++
Source
#include
<iostream>
int
main()
{
class
python
{
public:
void
Hello(void)
{
cout<<"Hello"<<endl;
}
void
count(int
n)
{
int
in=0;
while(in<=n)
{
inin=in+1;
cout<<in<<endl;
}
}
};
return
0;
}
python数组实际不是数组,而是一个list对象,如果要参考它的用法,可以参考这个对象的方法。需要注意的是,python数组实际是一个链表,因此定义后不能像php之类语言一样,直接在后面追加元素,而是需要用操作链表的方法操作。在上述例子中:如果用
arr[2]
=
'ccccc'
可以改变第三个元素的值,但如果用
arr[3]
=
'dddd'
增加一个元素是会指错的,应该用:arr.append('ddddd')
或
arr.insert(任意位置,
'dddd')
增加元素。对于多维数组,定义方式为:
arr
=
[[]]
*
3
它定义的是:[[],
[],
[]],也可以用
arr
=
[[]
for
i
in
range(3)]
对于数组和字符串等常用操作,后面会有一章专门介绍,这里就不在列举更多的使用方法。python数组实际不是数组,而是一个list对象,如果要参考它的用法,可以参考这个对象的方法。需要注意的是,python数组实际是一个链表,因此定义后不能像php之类语言一样,直接在后面追加元素,而是需要用操作链表的方法操作。在上述例子中:如果用
arr[2]
=
'ccccc'
可以改变第三个元素的值,但如果用
arr[3]
=
'dddd'
增加一个元素是会指错的,应该用:arr.append('ddddd')
或
arr.insert(任意位置,
'dddd')
增加元素。对于多维数组,定义方式为:
arr
=
[[]]
*
3
它定义的是:[[],
[],
[]],也可以用
arr
=
[[]
for
i
in
range(3)]
对于数组和字符串等常用操作,后面会有一章专门介绍,这里就不在列举更多的使用方法。
D. C++调用时python时,如何传入数组做为参数
题主,你基本操作没什么问题,有几个小地方要修改一下,修改如下:
你的源码:
PyObject* list = PyList_New(3);
for (size_t i = 0; i < 3; i++)
PyList_Append(list, Py_BuildValue("i", i));
PyEval_CallObject(pFunc, list);
--------------------------------------------------------------------------------------
修改后,应该是这样
PyObject*pArgs=NULL;
PyObject*list=PyList_New(0);//3改成0
pArgs=PyTuple_New(1);//定义1个参数
for(size_ti=0;i<3;i++)
PyList_Append(list,Py_BuildValue("i",i));//这样才能用Append,
PyTuple_SetItem(pArgs,0,list);//将列表赋给参数
PyEval_CallObject(pFunc,list);//传入参数,调用函数
注意事项:PyList_New(0)初始化0的时候,应该用Append初始化
PyList_New(3)初始化3个时候,应该用SetItem初始化
如果用Append的话,会出现[NULL,NULL,NULL]的情况
我在给一个完整的:
Python :(hello.py)
defTestList(nlist):
print(nlist)
return
一般参数都是已元组形式传入的
Py_Initialize();
PyRun_SimpleString("importsys");
PyRun_SimpleString("sys.path.append('./')");
PyObject*pMole=NULL;
PyObject*pList=NULL;
PyObject*pFunc=NULL;
PyObject*pArgs=NULL;
pMole=PyImport_ImportMole("hello");
pFunc=PyObject_GetAttrString(pMole,"TestList");
pArgs=PyTuple_New(1);
pList=PyList_New(0);
for(inti=0;i<3;i++)
{
PyList_Append(pList,Py_BuildValue("i",i));
}
PyTuple_SetItem(pArgs,0,pList);
pRet=PyEval_CallObject(pFunc,pArgs);
Py_Finalize();
最后输出的:[0, 1, 2]
E. Python如何把数值放到一个数组里面
Python把数值放到一个数组里面的步骤如下:
1.第一步,定义一个列表a,赋值为1-9这九个数字符素,注意表示形式。
F. python 函数怎么返回两个数组参数
你的意思是 函数值返回值直接放到另一个函数当参数吧
实际上可以变通一下,返回的是元组,然后怎么拿到元组中的一个
最简单的就是使用[]
如果 return a,b,c ,想拿到b
使用 fun()[1] // 下标从0开始
G. python 调用 C++的DLL,函数参数是数组怎么处理
给你一个例子看看,你就知道怎么做了
C++的接口
typedef struct
{
unsigned long DeviceType;
int Handle;
int NumberOfClients;
int SerialNumber;
int MaxAllowedClients;
}NeoDevice;
int _stdcall icsneoFindNeoDevices(unsigned long DeviceTypes, NeoDevice *pNeoDevices, int *pNumberOfDevices);
Python调用的代码:
class NeoDevice(Structure):
_fields_ = [("DeviceType",c_ulong),
("Handle",c_int),
("NumberOfClients",c_int),
("SerialNumber",c_int),
("MaxAllowedClients",c_int)]
class cNeoVICan(CCanBase):
def __init__(self):
neoVi = windll.icsneo40
self.icsneoFindNeoDevices = neoVi.icsneoFindNeoDevices
if __name__ == "__main__":
canBus = cNeoVICan()
print canBus.icsneoGetDLLVersion()
iNumberOfDevices = (NeoDevice * 10)()
num = c_int()
iResult = canBus.icsneoFindNeoDevices(c_ulong(65535), cast(iNumberOfDevices, POINT(NeoDevice)), byref(num))