error - ¿Cómo puedo usar un archivo DLL de Python?




loading python27 (5)

Tal vez con Dispatch :

from win32com.client import Dispatch

zk = Dispatch("zkemkeeper.ZKEM") 

Donde zkemkeeper es un archivo DLL registrado en el sistema ... Después de eso, puede acceder a las funciones con solo llamarlas:

zk.Connect_Net(IP_address, port)

¿Cuál es la forma más fácil de usar un archivo DLL desde Python?

Específicamente, ¿cómo se puede hacer esto sin escribir ningún código C ++ envoltorio adicional para exponer la funcionalidad a Python?

La funcionalidad nativa de Python es muy preferible a usar una biblioteca de terceros.



ctypes será lo más fácil de usar pero (mal) usarlo hace que Python esté sujeto a bloquearse. Si tratas de hacer algo rápidamente y eres cuidadoso, es genial.

Te animo a que revises Boost Python . Sí, requiere que escriba algún código C ++ y tenga un compilador C ++, pero en realidad no necesita aprender C ++ para usarlo, y puede obtener un compilador C ++ gratuito (como en la cerveza) de Microsoft .


Esta página es un ejemplo muy simple de funciones de llamada desde un archivo DLL.

Es muy fácil llamar a una función DLL en Python. Tengo un archivo DLL hecho a sí mismo con dos funciones: add y sub que toman dos argumentos.

add(a, b) devuelve la adición de dos números
sub(a, b) devuelve la resta de dos números

El nombre del archivo DLL será "demo.dll"

Programa:

from ctypes import*
# give location of dll
mydll = cdll.LoadLibrary("C:\\demo.dll")
result1= mydll.add(10,1)
result2= mydll.sub(10,1)
print "Addition value:-"+result1
print "Substraction:-"+result2

Salida:

Addition value:-11
Substraction:-9


Sí, fue added en la versión 2.5.
La sintaxis es:

a if condition else b

La primera condition se evalúa, luego a o b se devuelve según el valor Boolean de condition
Si la condition evalúa como verdadera, se devuelve una a, de lo contrario se devuelve b .

Por ejemplo:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

Tenga en cuenta que los condicionales son una expresión , no una declaración . Esto significa que no puede usar asignaciones, pass u otras declaraciones en un condicional:

>>> pass if False else x = 3
  File "<stdin>", line 1
    pass if False else x = 3
          ^
SyntaxError: invalid syntax

En tal caso, tiene que usar una sentencia normal if lugar de una condicional.

Tenga en cuenta que está mal visto por algunos pitonistas por varias razones:

  • El orden de los argumentos es diferente de muchos otros lenguajes (como C, Ruby, Java, etc.), lo que puede provocar errores cuando las personas que no están familiarizadas con el comportamiento "sorprendente" de Python lo usan (pueden invertir el orden).
  • Algunos lo consideran "poco manejable", ya que va en contra del flujo normal de pensamiento (pensando primero en la condición y luego en los efectos).
  • Razones estilísticas.

Si tiene problemas para recordar el pedido, recuerde que si lo lee en voz alta (casi) dice lo que quiere decir. Por ejemplo, x = 4 if b > 8 else 9 se lee en voz alta ya que x will be 4 if b is greater than 8 otherwise 9 .

Documentación oficial:







python dll