Comment utiliser les fonctions dans des fichiers séparés version Perl et version Python

Remarque: les fonctions et méthodes avec _ au début sont privées, il n'est donc pas bon d'y accéder de l'extérieur. (Pycharm donne un avertissement)

Version Perl

Foo.pm


package Foo;
use v5.10;
use strict;
use warnings;
use Exporter 'import';

our @EXPORT_OK = qw/pub_func/; # pub_Autoriser l'exportation des fonctions func

sub pub_func {
    say "pub_func";
}

sub _pri_func {
    say "_pri_func";
}
1;

main.pl


#!/usr/bin/perl
use v5.10;
use strict;
use warnings;

use FindBin qw($Bin);
use lib "$Bin";
use Foo qw/pub_func/; # pub_Importez la fonction func dans l'espace de noms

sub main {
    pub_func();       # pub_func
    Foo::pub_func();  # pub_func
    Foo::_pri_func(); # _pri_func
}

if ($0 eq __FILE__) {
    main();
}

Version Python

foo.py


# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function, division, absolute_import


def pub_func():
    print("pub_func")


def _pri_func():
    print("_pri_func")

main.py


# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function, division, absolute_import

import foo
from foo import pub_func  # pub_Importez la fonction func dans l'espace de noms


def main():
    pub_func()      # pub_func
    foo.pub_func()  # pub_func
    foo._pri_func() # _pri_func
                    #Pycharm dans ma tête_Fonctions avec"Access to a protected member _pri_func of a module"Vous donnera un avertissement


if __name__ == '__main__':
    main()

Pour savoir comment écrire à partir du module import name1, name2 Nous ne le recommandons pas car il peut importer plusieurs noms de fonction identiques dans l'espace de noms comme suit.

Bons idiomes Python, mauvais idiomes

Cette fois, c'est un «pas bon» beaucoup plus faible que le précédent «pas bon», mais il vaut toujours mieux l'arrêter à moins qu'il n'y ait une bonne raison. Cela ne fonctionne généralement pas car vous finissez par avoir un objet qui vit dans deux espaces de noms distincts.

Version améliorée qui n'importe pas directement dans l'espace de noms

main2.pl


#!/usr/bin/perl
use v5.10;
use strict;
use warnings;

use FindBin qw($Bin);
use lib "$Bin";
#use Foo qw/pub_func/;
use Foo;

sub pub_func {
    return Foo::pub_func(@_);
}

sub main {
    pub_func();       # pub_func
    Foo::pub_func();  # pub_func
    Foo::_pri_func(); # _pri_func
}

if ($0 eq __FILE__) {
    main();
}

En faisant cela, l'argument et la valeur de retour peuvent être jetés dans un cercle, de sorte que le nom de la fonction peut être changé librement. Je ne savais pas comment lancer tous les arguments dans la version Python, alors je l'ai omis. (Je me demande si je dois tout écrire correctement)

Recommended Posts

Comment utiliser les fonctions dans des fichiers séparés version Perl et version Python
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Comment utiliser is et == en Python
Comment utiliser SQLite en Python
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
[Introduction à Python] Comment utiliser la classe en Python?
Comment installer et utiliser pandas_datareader [Python]
python: Comment utiliser les locals () et globals ()
Comment changer de version de Python dans cloud9
Comment utiliser __slots__ dans la classe Python
Comment utiliser le zip Python et énumérer
[Python] Comprendre comment utiliser les fonctions récursives
Comment utiliser les expressions régulières en Python
Comment utiliser la bibliothèque C en Python
Comment générer une séquence en Python et C ++
Résumé de la façon d'importer des fichiers dans Python 3
Comment utiliser la bibliothèque d'images Python dans la série python3
Résumé de l'utilisation de MNIST avec Python
Comment obtenir les fichiers dans le dossier [Python]
Comment utiliser tkinter avec python dans pyenv
[Python] Comment utiliser la fonction de hachage et taple.
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
[Pour les débutants] Comment utiliser la commande say avec python!
python3: Comment utiliser la bouteille (2)
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
Inclure et utiliser des fichiers Kv externes avec Python Kivy
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment trier un dict dans une liste et une instance dans une liste
[Python] Comment utiliser checkio
Comment utiliser des variables dans les fichiers de définition d'unité systemd
Comment télécharger des fichiers depuis Selenium of Python dans Chrome
Comment ajouter des numéros de page à un fichier PDF (en Python)
[Python] Comment fractionner et modulariser des fichiers (simple, exemple)
J'ai essayé de résumer comment utiliser les pandas de python
Comment utiliser le modèle appris dans Lobe en Python
Comment utiliser Decorator dans Django et comment le créer
Comment développer en Python
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
Comment installer et utiliser pyenv, que faire si vous ne pouvez pas changer de version de Python
Remarques sur l'utilisation de StatsModels qui peuvent utiliser la régression linéaire et GLM en python
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
Comment utiliser la méthode __call__ dans la classe Python
Comment créer et utiliser des bibliothèques statiques / dynamiques en langage C
[Python] Utilisez ceci pour lire et écrire des fichiers wav [wavio]
Comment exécuter des commandes et des scripts shell externes en python
Comment se connecter à AtCoder avec Python et soumettre automatiquement
[Python] Comment faire PCA avec Python
Comment installer et utiliser Tesseract-OCR
Comment utiliser les classes dans Theano
[Python] Comment utiliser la série Pandas