Rumah > pembangunan bahagian belakang > Tutorial Python > Ke Arah Fail Konfigurasi Python yang Mudah Versi Ø

Ke Arah Fail Konfigurasi Python yang Mudah Versi Ø

Barbara Streisand
Lepaskan: 2024-12-05 01:40:13
asal
759 orang telah melayarinya

Towards Effortless Python Configuration Files Version Ø

pengenalan

Kami menulis banyak aplikasi Python yang memerlukan penyesuaian melalui sifat luaran atau aplikasi yang ingin kami sesuaikan atau mempengaruhi tingkah laku dengan sifat tidak berkod keras dan/atau sifat konfigurasi masa jalan. Pelbagai carian Google untuk penyelesaian menghasilkan tutorial yang menunjukkan kita kepada sampel kod yang walaupun praktikalnya berfungsi, tetapi tidak skala yang sesuai untuk aplikasi dunia sebenar.

Set artikel ini mendokumentasikan perjalanan saya melalui pelbagai pelaksanaan sambil saya berulang kali memfaktorkan semula dan melaksanakan semula perjalanan saya ke mekanisme yang ringkas, boleh diselenggara dan mudah diperluas untuk mengurus sifat konfigurasi aplikasi.

Versi Ø

Versi tutorial yang saya temui hanyalah pengembangan coretan kod yang disediakan oleh pembangun perpustakaan untuk membuktikan bahawa pelaksanaannya berfungsi. Walaupun ini sudah memadai untuk memberikan bukti konsep, coretan ini tidak berskala dalam dunia nyata aplikasi.

Contohnya ialah coretan kod berikut.

import configparser

def create_config():
    config = configparser.ConfigParser()

    # Add sections and key-value pairs
    config['General'] = {
      'debug': 'True', 
      'log_level': 'info'
    }
    config['Database'] = {
      'db_name': 'example_db',
      'db_host': 'localhost', 
      'db_port': '5432'
    }

    with open('config.ini', 'w') as configfile:
        config.write(configfile)


if __name__ == "__main__":
    create_config()
Salin selepas log masuk

Walaupun coretan kod ini sudah tentu membolehkan kami mengekalkan nilai konfigurasi kami, ia menyebabkan kami menghadapi masalah membaca nilai berterusan ini. Sekali lagi, coretan pembangun pelaksanaan memberikan kami contoh kod tentang cara mendapatkan semula nilai ini seperti yang digambarkan dalam coretan kod berikut.

import configparser

def read_config():
    config = configparser.ConfigParser()

    config.read('config.ini')

    # Access values from the configuration file
    debug_mode = config.getboolean('General', 'debug')
    log_level = config.get('General', 'log_level')
    db_name = config.get('Database', 'db_name')
    db_host = config.get('Database', 'db_host')
    db_port = config.get('Database', 'db_port')

    # Return a dictionary with the retrieved values
    config_values = {
        'debug_mode': debug_mode,
        'log_level': log_level,
        'db_name': db_name,
        'db_host': db_host,
        'db_port': db_port
    }

    return config_values

if __name__ == "__main__":
    # Call the function to read the configuration file
    config_data = read_config()

    # Print the retrieved values
    print('Debug Mode',       config_data['debug_mode'])
    print('Log Level',         config_data['log_level'])
    print('Database Name', config_data['db_name'])
    print('Database Host', config_data['db_host'])
    print('Database Port', config_data['db_port'])
Salin selepas log masuk

Kesimpulan

Saya melihat banyak isu dalam kod di atas. Walaupun ia boleh diterima dengan sempurna untuk skrip kecil, kod tersebut mengalami penggunaan nilai rentetan, berkaitan dengan nama pembolehubah Python sebenar dan potensi percambahannya merentasi pangkalan kod yang besar. Walaupun ini berpotensi dikurangkan oleh penggunaan pemalar global, pendapat saya ialah ini tidak boleh skala kerana ia tidak mengikut prinsip reka bentuk perisian asas yang dianuti oleh Andrew Hunt dan David Thomas, dalam buku mani mereka, The Pragmatic Programmer dan gagal DRY prinsip, aka Jangan Ulangi Sendiri.

Kod sumber untuk artikel ini ada di sini.

Lihat siaran seterusnya saya yang mendokumenkan pelaksanaan awal untuk menyelesaikan beberapa isu yang saya gariskan.

Atas ialah kandungan terperinci Ke Arah Fail Konfigurasi Python yang Mudah Versi Ø. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan