Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version

Hinweis: Funktionen und Methoden mit "_" am Anfang sind privat, daher ist es nicht gut, von außen darauf zuzugreifen. (Pycharm warnt)

Perl-Version

Foo.pm


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

our @EXPORT_OK = qw/pub_func/; # pub_Ermöglichen den Export von Funktionsfunktionen

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_Importieren Sie die Funktion func in den Namespace

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

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

Python-Version

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_Importieren Sie die Funktion func in den Namespace


def main():
    pub_func()      # pub_func
    foo.pub_func()  # pub_func
    foo._pri_func() # _pri_func
                    #Pycharm in meinem Kopf_Funktionen mit"Access to a protected member _pri_func of a module"Wird Ihnen eine Warnung geben


if __name__ == '__main__':
    main()

Zum Schreiben von from module import name1, name2 Wir empfehlen es nicht, da es möglicherweise denselben Funktionsnamen mehrmals in den Namespace importiert, wie unten gezeigt.

Gute Python-Redewendungen, schlechte Redewendungen

Dieses Mal ist es ein viel schwächeres "nicht gut" als das vorherige "nicht gut", aber es ist immer noch besser, es zu stoppen, es sei denn, es gibt einen guten Grund. Dies funktioniert normalerweise nicht, da Sie am Ende ein Objekt haben, das sich in zwei separaten Namespaces befindet.

Verbesserte Version, die nicht direkt in den Namespace importiert wird

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();
}

Auf diese Weise können das Argument und der Rückgabewert in einen Kreis geworfen werden, sodass der Funktionsname frei geändert werden kann. Ich wusste nicht, wie ich alle Argumente in der Python-Version werfen sollte, also habe ich es weggelassen. (Ich frage mich, ob ich alles richtig schreiben muss)

Recommended Posts

Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Verwendung ist und == in Python
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So installieren und verwenden Sie pandas_datareader [Python]
Python: Verwendung von Einheimischen () und Globalen ()
So wechseln Sie die Python-Version in Cloud9
Verwendung von __slots__ in der Python-Klasse
Verwendung von Python zip und Aufzählung
[Python] Verstehen, wie rekursive Funktionen verwendet werden
Verwendung regulärer Ausdrücke in Python
Verwendung der C-Bibliothek in Python
So generieren Sie eine Sequenz in Python und C ++
Zusammenfassung zum Importieren von Dateien in Python 3
Verwendung der Python-Bildbibliothek in der Python3-Serie
Zusammenfassung der Verwendung von MNIST mit Python
So erhalten Sie die Dateien im Ordner [Python]
Wie man tkinter mit Python in Pyenv benutzt
[Python] Verwendung von Hash-Funktion und Taple.
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
So schreiben Sie den richtigen Shebang in Perl-, Python- und Ruby-Skripten
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
python3: Verwendung der Flasche (2)
Tipps für diejenigen, die verwirrt sind, wie man is und == in Python verwendet
Schließen Sie externe Kv-Dateien in Python Kivy ein und verwenden Sie sie
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
[Python] Verwendung von checkio
Verwendung von Variablen in systemd Unit-Definitionsdateien
So laden Sie Dateien von Selenium of Python in Chrome herunter
So fügen Sie einer PDF-Datei Seitenzahlen hinzu (in Python)
[Python] So teilen und modularisieren Sie Dateien (einfach, Beispiel)
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Verwendung des in Lobe in Python erlernten Modells
Wie man Decorator in Django benutzt und wie man es macht
Wie man in Python entwickelt
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
So installieren und verwenden Sie pyenv. Was tun, wenn Sie die Python-Version nicht wechseln können?
Hinweise zur Verwendung von StatsModels, die lineare Regression und GLM in Python verwenden können
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
Verwendung der Methode __call__ in der Python-Klasse
Erstellen und Verwenden von statischen / dynamischen Bibliotheken in C-Sprache
[Python] Verwenden Sie diese Option, um WAV-Dateien zu lesen und zu schreiben. [WAVIO]
Ausführen externer Shell-Skripte und -Befehle in Python
So melden Sie sich mit Python bei AtCoder an und senden automatisch
[Python] Wie man PCA mit Python macht
So installieren und verwenden Sie Tesseract-OCR
Verwendung von Klassen in Theano
[Python] Verwendung der Pandas-Serie