PowerShell 대 Python: 시대를 초월한 대결

어떤 프로그래밍 언어가 가장 좋은가요? 10명의 개발자에게 물어보면 10가지 다른 답변을 얻을 수 있습니다. 이 글에서는 PowerShell과 Python이라는 두 언어를 비교해보겠습니다. 각 언어의 특징인 구문, 플랫폼에서의 이용 가능성 등을 비교하고 대조함으로써 두 언어에 대한 간략한 개요를 얻을 수 있을 것입니다.

PowerShell 대 Python의 대결이 시작됩니다!

이 글을 마치면 일반적인 질문 몇 가지에 대한 답변을 할 수 있게 되는데요:

  • 이 두 언어의 공통점은 무엇인가요?
  • 둘 사이에는 어떤 차이가 있나요?
  • 각각의 언어를 최대한 활용하기 좋은 사용 사례는 무엇인가요?
  • 구문은 어떻게 다른가요?
  • 둘 중 어떤 언어를 더 잘 활용하기 위해 어떤 역할을 가져야 할까요?

이 글은 PowerShell이나 Python을 잘 모르지만 어느 언어를 사용해야 할 지 헷갈리는 사람들을 위한 것입니다. 이미 한 언어를 알고 있는 사람들이 다른 언어에 대해 배우고 싶을 때에도 유용합니다.

자, 시작해봅시다!

직무 별

Python과 PowerShell의 기술적인 측면에 대해 종일 이야기할 수 있을지도 모르지만, 두 언어를 비교할 때 중요한 부분은 어떤 직무가 어떤 언어에 가장 적합한지를 결정하는 것입니다.

PowerShell과 Python 모두 두 가지 다른 영역(Microsoft와 오픈 소스 리눅스 커뮤니티)에서 개발되었습니다. 두 언어의 구문, 커뮤니티, 그리고 전반적인 느낌은 다르기 때문에 일반적으로 특정 직무에 적합하게 적용됩니다.

여기서는 PowerShell(Core)가 언급되어야 합니다. 6.0.0 이후 버전은 오픈 소스로 개발되었습니다. 시대는 변화 중입니다.

시스템 관리자

PowerShell과 Python은 시스템 관리자로서 배우기에 좋은 언어입니다. 둘 다 훌륭한 자동화 도구이며, 시스템 관리자에게 많은 시간을 절약해 줄 수 있습니다. 그렇지만 Windows 시스템 관리자에게는 네이티브 .NET 프레임워크 통합 때문에 PowerShell이 더 나은 선택일 것입니다.

반면에 Python은 Linux 시스템 관리자에게 적합합니다.

Python과 PowerShell(Core)는 모두 크로스 플랫폼이지만, 대부분의 직무는 Windows와 PowerShell, Python과 Linux 사이에 분할될 것입니다.

개발자

개발자 지향적인 작업에 Python이 압도적으로 선두입니다. Python은 데이터 과학, 통계 분석 등 PowerShell이 다루지 못하는 영역에서 많은 지원을 받고 있습니다. Python은 때때로 과학적으로 지향된 언어와 같은 느낌을 줍니다.

또한 Python은 많은 대규모 서버 사이드 웹 애플리케이션 및 다른 “개발자 친화적” 애플리케이션을 실행할 수 있습니다.

PowerShell은 개발 언어로 사용될 수는 있지만, 보통 DevOps나 일반적인 시스템 관리자 자동화와 같이 자동화가 더 필요한 직무에 더 적합합니다.

운영 체제별

PowerShell

PowerShell은 Windows 환경에서의 영웅입니다. Windows에서 작업 자동화를 위해 활용할 수 있는 최고의 기술입니다. 특히, 온프레미스 및 Office 365 버전의 Active Directory 및 Microsoft Exchange와 같은 제품에 대해 참고할 만한 기술입니다.

PowerShell은 .NET Framework에 직접 액세스할 수 있으므로 모든 Windows 시스템과 완벽하게 통합되어 있으며 어떤 작업이든 쉽게 수행할 수 있습니다.

그러나 PowerShell은 Linux 지원을 가지고 있지만, 현재로서는 Python만큼 널리 사용되지는 않습니다.

Python

Python은 일반적으로 Linux 환경에서 더 좋습니다. Linux 커뮤니티에서의 깊은 뿌리 덕분에 Linux에서 거의 모든 작업을 수행하는 Python 모듈을 찾을 수 있습니다.

Python은 iOS 및 AIX와 같은 다른 플랫폼에서도 실행할 수 있습니다.

작업에 따라

PowerShell

PowerShell을 사용하여 일상적인 작업 관리 도구를 만들 수 있으며, Windows PowerShell을 사용하여 도구에 사용자 친화적인 GUI를 생성할 수도 있습니다.

Python

Python은 일반적으로 기계 학습, 통계, 데이터 과학, 서버 측 웹 및 데스크톱 애플리케이션과 같은 “무거운” 작업에 가장 적합합니다. Python은 이미지 처리에 대한 훌륭한 지원도 제공합니다.

구문의 공통점과 차이점 이해하기

이제 각 언어의 핵심 요소를 비교하고 대조해 보겠습니다.

PowerShell과 Python은 객체 지향적이며, 이는 논리적 개체 개념을 기반으로 구축되어 특정 작업을 수행하기 위해 개체를 생성, 조작 및 재사용합니다.

PowerShell과 Python은 모듈을 통해 코드를 재사용합니다. 모듈은 나중에 다른 프로그램에서 재사용될 수도 있으며, 다른 프로그래머가 작성한 모듈을 직접 가져올 수도 있습니다.

두 언어 모두 스크립트에서 쉽게 사용할 수 있는 큰 모듈 라이브러리를 갖고 있습니다.

PowerShell은 .NET 프레임워크 위에 구축된 작업 기반 명령줄 셸 및 스크립팅 언어로, .NET 프레임워크 객체를 받아들이고 반환합니다. 한편, Python은 해석형 프로그래밍 언어입니다.

Python 인터프리터는 사람이 읽을 수 있는 코드를 다른 형태의 코드로 변환하여 인터프리터가 이해할 수 있게 만든 다음, 실제 실행이 이루어지는 기계 판독 가능한 코드로 변경합니다.

이제 둘의 기초지식인 주석, 변수 선언, 조건문 등과 같은 기본적인 내용부터 시작하여 유사점과 차이점을 더 잘 이해해보겠습니다.

주석

PowerShell 또는 Python에서 한 줄 주석을 만드는 방법은 동일합니다. 아래와 같이 줄의 시작에 해시 기호(#)를 사용하면 됩니다.

# 이것은 PowerShell 주석이며 실행되지 않습니다.
# 이것은 Python 주석이며 실행되지 않습니다.

변수 선언

PowerShell의 모든 변수는 $로 시작하는 이름으로 시작합니다. 아래에서는 변수가 정수를 저장하는 방법을 볼 수 있습니다.

$var = 1

문자열 변수를 정의하는 방법은 PowerShell에서 동일하지만 값을 작은따옴표 또는 큰따옴표로 둘러싸야 합니다.

$var2 = "string"
$var3 = 'string'

PowerShell 변수에 대한 자세한 정보는 about_Variables 문서를 참조하십시오.

파이썬에서는 변수를 대부분 동일하게 처리하지만 변수는 $로 시작할 필요가 없습니다.

var1 = 7
var2 = "string"
var3 = 'string'

Python 변수에 대해 더 자세히 알아보려면 W3Schools와 다른 많은 온라인 자료를 참조할 수 있습니다.

수학 연산 작업

PowerShell과 Python에서 소수점이 없는 양수나 음수는 정수입니다. 기본적으로 이러한 숫자는 자동으로 정수형 변수에 할당됩니다. 이러한 변수에 대해 일반적인 수학 연산을 수행할 수 있습니다.

PowerShell에서는 일부 기본적인 수학 연산 예제를 확인할 수 있습니다.

$int1 = 70
$int2 = 77
$int3 = -10
$int1 + $int2
$int2 - $int1
$int1 + $Int3
Python and integers

더 많은 정보를 위해 RedmondMag의 PowerShell에서 수학 연산하는 방법 시리즈를 확인해보세요.

마찬가지로, Python에서도 아래와 같이 기본적인 수학 연산을 수행할 수 있습니다.

int1 = 70
int2 = 77
int3 = -10
int1 + int2
int2 - int1
int1 + int3
Artitmetic in Python

Python에서 수학 연산에 대해 자세히 알아보려면 유용한 geeks2geeks.com 기사를 참조하세요..

조건문 사용하기

조건문은 모든 프로그래밍 언어에서 중요합니다. 조건문을 사용하면 하나 이상의 조건에 따라 코드의 흐름을 재지정할 수 있습니다. if/then 구조와 같은 조건문을 다룰 때 PowerShell과 Python은 거의 동일합니다.

아래에서 두 언어 간에 약간의, 그러나 매우 중요한 차이가 있다는 것을 볼 수 있습니다. PowerShell은 괄호 (), 중괄호 {} 등의 특수 문자에 크게 의존하지만, Python은 들여쓰기를 사용합니다.

아래 PowerShell 예제에서 모든 괄호와 중괄호에 주목하세요.

if (Condition) {
    Code to be executed if the condition is true
} else {
    Other code to be executed if the condition is false
}

Python 코드와 대조하여 PowerShell 코드를 보세요. 조건문의 끝을 나타내는 콜론과 실행할 코드를 나타내는 공백만 볼 수 있습니다.

if condition:
    Code to be executed if the condition is true
else:
    Other code to be executed if the condition is false

예시로, 일반적인 PowerShell if/then 문의 모습과 작동 방식을 살펴봅시다. 아래 코드를 실행하면 77 is greater than 70이 출력됩니다.

$var1 = 77
$var2 = 70
if ($var1 -gt $var2) {
    Write-Host -Object "$var1 is greater than $var2"
} else {
    Write-host -Object "$var1 is less than $var2"
}

대조적으로, 동일한 작업이 Python에서 어떻게 수행되는지 살펴보세요. 다른 연산자와 콘솔에 텍스트를 출력하기 위한 다른 명령어 등 여러 차이점이 있습니다.

if var1 > var2:
    print(f"{var1} is greater than {var2}")
else:
    print(f"{var1} is less than {var2}")

반복

프로그래밍 언어에서 또 다른 중요한 개념은 반복입니다. 루프를 통해 언어는 조건이 충족될 때까지 또는 특정 횟수만큼 지속적으로 코드를 반복 실행할 수 있습니다.

PowerShell에서는 일반적인 foreach 문은 아래와 같이 보입니다.

foreach ($item in $list) {
	Code to be executed for each item
}

Python에서도 동일한 작업을 수행하는 유사한 루프는 아래와 같이 for 루프를 사용합니다.

for item in list:
	Code to be executed for each item

PowerShell과 Python은 문법에서 많은 유사성을 가지고 있습니다. 특히 기본적인 부분과 언어의 핵심 사용법에서는 더욱 유사합니다. 이러한 유사성은 PowerShell을 숙달한 사람이 Python에 대해 더 많이 배우고 싶을 때, 또는 그 반대의 경우에 큰 장점이 됩니다.

같은 문제를 다른 방식으로 해결하기

이제 PowerShell과 Python을 사용하여 동일한 문제를 약간 다른 방식으로 해결하는 방법을 보여드리겠습니다. 이를 위해 줄로 구분된 숫자를 포함하는 간단한 텍스트 파일을 읽고, 특정 범위의 숫자만 콘솔에 반환할 것입니다.

사용할 파일은 input_text.txt이라고 하며, 줄로 구분된 숫자는 1부터 6345까지의 다양한 숫자를 포함하고 있습니다.

PowerShellPython에서 파일에서 반환된 모든 숫자를 처리하는 함수를 만들겠습니다.

PowerShell로 파일 처리하기

아래에서 PowerShell에서 이 작업을 수행하는 방법을 확인할 수 있습니다.

Define a function called Get-TwoDigits
 function Get-TwoDigits {
     [CmdletBinding()]
     param(
         [Parameter()]
         $List ## List라는 이름의 입력 매개변수를 제공하여 숫자를 나타냅니다.
     )
     ## List의 각 숫자에 대해 반복합니다. 숫자가 9보다 크고
     ## 99보다 작으면 해당 숫자를 콘솔에 반환합니다.
     foreach($num in $List){
         if($num -gt 9 -and $num -le 99 ){
             Write-Host $num
         }
 }
 }
 Read the text file and place contents into an array called inputlist
 PS51> $inputlist = Get-Content -Path .\input_text.txt
 Call the function providing the contents of the file as the List parameter
 PS51> Get-TwoDigits -List $inputlist

Get-TwoDigits를 실행하면 PowerShell은 input_text.txt에서 9에서 99 사이의 숫자만 반환합니다.

Python으로 파일 처리하기

이제 동일한 단계를 Python으로 수행하여 구문 차이를 확인해 보겠습니다.

## open() 메서드를 사용하여 파일 핸들을 엽니다.
File_Read = open("/PS_Vs._PY/input_text.txt")

## 파일을 읽고 splitlines() 메서드로 큰 문자열을 배열로 분할합니다.
inputData = (File_Read.read().splitlines())

## 열린 파일 핸들을 닫습니다.
File_Read.close()

## input_list라는 단일 매개변수를 가진 two_digits라는 함수를 정의합니다.
def two_digits (input_list):
    ## List의 각 숫자에 대해 루프를 실행합니다. 숫자가 9보다 크고 99보다
    ## 작으면 해당 숫자를 콘솔에 반환합니다.
    for num in input_list:
        if (int(num) > 9) and (int(num) <= 99):
            print(num)


>>> two_digits(inputData)

two_digits() 함수를 실행하면 Python은 input_text.txt에서 9에서 99 사이의 숫자만 반환합니다.

Python에서 함수를 생성하는 것은 거의 동일한 구조입니다. 들여쓰기와 대소문자 구분이 중요하다는 점을 명심하세요.

추가 자료

Source:
https://adamtheautomator.com/powershell-vs-python/