관리자 글쓰기
[Linux] 기본 명령어 정리
2021. 10. 13. 23:15 - 프론트맨

Window 컴퓨터에 WSL을 설치하고 Linux 가상환경을 만들었다.

 

Window는 모두 알다시피 창과 마우스 Event (더블클릭, 드로그 앤 드롭 등) 를 이용해서

일반 사용자에게 편하게 만들어져 있다.

 

하지만 Linux에서는 모든 걸 콘솔에서 제어해야 하기 때문에 

개발자에게 초점이 맞춰져있다고 보면 된다.

 

 

 

오늘은 Linux의 명령어에 대해서 간단하게 정리해보았다.

 

 

Window에서 Linux 가상환경을 사용할 때는 꼭 주의할 점이 있다.

 

Linux에서 Window에 있는 파일을 건드리는 것은 상관없다.

하지만 반대로 Window에서 Linux의 파일을 건드리면 절대 안된다.

 

이것만 조심하면 Linux 환경에서 더 재밌게 코딩할 수 있을 것이다.

 

 

 

'Programming > Linux' 카테고리의 다른 글

Linux 에서 Node.js 느리게 돌아갈 때 해결 방법  (0) 2021.10.14
[Python] Selenium 정리
2021. 10. 13. 22:09 - 프론트맨

파이썬으로 웹 크롤링, 웹 스크래핑을 할 때는

먼저 타겟 url로 접속을 해야 합니다.

이때는 보통 2가지 방법이 주로 쓰이는데

 

바로 RequestsSelenium입니다.

 

Requests는 백그라운드에서 실행되어서 빠르다는 장점이 있지만

정적인 방식이기 때문에 정보를 가져오는 것 밖에 할 수 없다는 단점이 있습니다.

 

Selenium은 직접 창을 열면서 실행되기 때문에 Request에 비해서 느리긴 하지만

동적인 방식이기 때문에 스크롤을 내리거나 검색어를 입력하는 등의 작업이 가능합니다.

 

↓ Requests 정리

 

[Python] 파이썬 웹 스크래핑 완벽 정리(주식 시가 가져오기)

오늘은 파이썬을 이용한 웹 스크래핑에 대해 알아보겠습니다 웹 페이지를 가져와서 데이터를 추출해 내는 행위를 웹 크롤링(crawling) 혹은 웹 스크래핑(scraping)이라고 합니다. 웹 스크래핑을 하

squidcoding.tistory.com

 

오늘은 Selenium에 대해 살펴보겠습니다.

 

우선 터미널에 아래의 코드를 입력해서 Selenium을 설치합니다.

 

pip install selenium

 

그리고 Selenium으로 크롬 브라우저를 실행하기 위해서 Chrome Driver를 따로 다운 받아야 합니다.

 

주소창에 chrome://version 이라고 치면 크롬 브라우저의 버전을 확일할 수 있습니다.

 

 

그리고 자신의 브라우저 버전의 ChromeDriver를 다운로드하면 됩니다.

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 95, please download ChromeDriver 95.0.4638.17 If you are using Chrome version 94, please download ChromeDriver 94.0.4606.61 If you are using Chrome version 93, please download ChromeDriver 93.0.4577.63 For o

chromedriver.chromium.org

 

이제 코드를 칩니다.

from selenium import webdriver

browser = webdriver.Chrome("C:/Users/chromedriver.exe")
browser.get("http://naver.com")

webdriver.Chrome( )에는 chromedriver.exe 파일의 경로를 적으면 됩니다. (같은 위치에 있으면 비워놔도 됨)

그리고 browser.get 메서드로 이동할 페이지의 주소를 입력합니다.

 

 

여기까지는 Requests와 비슷합니다.

이제부터 Selenium의 동적인 기능에 대해 알아봅시다.

 

네이버에서 '오징어 게임'을 검색하는 예제입니다.

개발자 모드에서 열어보면 검색창은 input 태그에 'query'라는 id를 갖고 있습니다.

 

from selenium import webdriver

browser = webdriver.Chrome("C:\\Users\\LG\\Desktop\\Python Workspace\\chromedriver.exe") 

browser.get("http://naver.com")

elem = browser.find_element_by_id('query')
elem.send_keys('오징어게임')

browser.find_element_by_id 메서드를 사용해서 elem 변수에 저장하고

elem.send_keys로 검색어를 입력할 수 있습니다.

 

element를 가져오는 방법은 id 외에도

class, xpath, tag_name, css_selector 등 다양합니다.

 

만약에 elem 변수를 한번 사용하고 말 것이면 

굳이 변수에 저장하지 않아도 됩니다.

 

 

이제 검색 버튼을 클릭합니다.

아래를 보면 button 태그에 search_btn의 id를 갖고 있는 것을 볼 수 있습니다.

 

 

이 버튼을 클릭하는 방법입니다.

 

from selenium import webdriver

browser = webdriver.Chrome("C:\\Users\\LG\\Desktop\\Python Workspace\\chromedriver.exe") 

browser.get("http://naver.com")

elem = browser.find_element_by_id('query')
elem.send_keys('오징어게임')

browser.find_element_by_id('search_btn').click() # 검색 버튼 클릭

 

이번엔 변수에 저장하지 않는 방법을 사용했습니다.

click() 메서드로 쉽게 버튼을 클릭할 수 있습니다.

 

 

여기까지 Selenium으로 네이버에서 키워드를 검색해보는 예제였습니다.

Selenium으로 웹 페이지를 이동해서 웹 스크래핑을 하려면

그 페이지의 소스를 Beautifulsoup에 넘겨주어야 합니다.

 

from selenium import webdriver
from bs4 import BeautifulSoup

browser = webdriver.Chrome("C:\\Users\\LG\\Desktop\\Python Workspace\\chromedriver.exe") 

browser.get("http://naver.com")

elem = browser.find_element_by_id('query')
elem.send_keys('오징어게임')

browser.find_element_by_id('search_btn').click()

res = browser.page_source # 현재 페이지의 소스를 변수에 저장
soup = BeautifulSoup(res, "lxml") # BeautifulSoup 에 소스를 전달

browser.page_source 메서드로 현재 페이지의 소스를 가져올 수 있습니다.

 

마지막으로 작업이 끝난 후 창을 닫는 메서드입니다.

 

browser.close()

browser.close() → 현재 탭만 종료시킵니다.

 

browser.quit()

browser.quit() → 전체 브라우저를 종료시킵니다.

 

 

 

 

오늘은 Selenium에 대해 간단히 정리해 보았습니다.

끝까지 읽어주셔서 감사합니다.

Python에는 한 줄 for문이라는 독특한 문법이 있습니다.

처음에는 되게 복잡해 보이고 이게 뭐지 싶을 텐데 

이해하면 정말 편하고 유용한 기술입니다.

 

 

 

한 줄 for문을 쓰는 이유

 

한 줄 for문은 간편하게 리스트를 만드는 용도로 쓰입니다.

먼저 기본형을 살펴보면

 

# 한 줄 for문을 사용하지 않을 때
my_list = []
for x in range(5):
	my_list.append(x)

print(my_list) # [0,1,2,3,4]
    
# 한 줄 for문을 사용했을 때
my_list = [x for x in range(5)]

print(my_list) # [0,1,2,3,4]

 

리스트에 0부터 4까지 집어넣는 예제입니다.

위의 코드와 아래 코드는 같은 의미입니다.

원래는 3줄을 써야 하는데 한 줄 for문을 사용하면 말 그대로 한 줄이면 충분합니다.

 

 

 

한 줄 for문 응용하기 (수식 추가)

 

수식을 추가할 수도 있습니다.

 

my_list = [x+x for x in range(5)]

print(my_list) # [0,2,4,6,8]


my_list = [x*x for x in range(5)]

print(my_list) # [0,1,4,9,16]


my_list = [x**x for x in range(5)]

print(my_list) # [1,1,4,27,256]

 

 

한 줄 for문 응용하기 ( if문 )

 

조건을 추가하는 것도 가능합니다.

 

my_list = [x for x in range(1, 11) if x % 2 == 0] # 짝수만 추출

print(my_list) # [2,4,6,8,10]



my_list = []
for x in range(1, 11):
    if x % 2 == 0:
        my_list.append(x)

print(my_list) # [2,4,6,8,10]

 

반복문 끝에 if 문을 추가하면 조건을 달 수 있습니다.

위의 코드를 풀어쓰면 아래 코드가 됩니다.

 

 

한 줄 for문 응용하기 ( 이중 for문 )

 

이중 for문도 가능합니다.

nums = [[4, 26, 88],
       [77, 78, 26, 2, 89],
       [2, 42, 70, 41],
       [31, 92, 41],
       [24, 85, 22, 5, 76]]

nums 에서 값이 50 이상인 숫자만 my_list에 담는 예제입니다.

 

한 줄 for문 없이 짠 코드

 

my_list = []

for x in nums:
    for y in x:
        if y >= 50:
            my_list.append(y)

print(my_list) # [88, 77, 78, 89, 70, 92, 85, 76]

 

한 줄 for문으로 짠 코드

 

my_list = [y for x in nums for y in x if y >= 50]

print(my_list) # [88, 77, 78, 89, 70, 92, 85, 76]

 

다차원 리스트를 한 줄 for문으로 접근할 때 한 가지 주의할 점은

마지막에 결국 my_list에 들어갈 값을 맨 앞에 적어야 합니다.

 

이것만 조심하면 어렵지 않게 한 줄 for문을 다룰 수 있을 것이라고 생각합니다.

 

 

 

 

지금까지 한 줄 for문에 대해 다뤄보았습니다.

파이썬 초급자에게는 다소 생소할 수 있을 문법이라고 생각해서 정리해 보았습니다.

끝까지 읽어주셔서 감사드립니다.

 

파이썬의 requests 모듈로 웹 스크래핑을 하다가

requests.exceptions.ConnectionError 오류가 발생했다.

 

아무래도 특정 사이트에서 requests로 들어오는 걸 막은 것 같다.

 

 

해결 방법

 

해결 방법은 간단하다.

우리가 사이트에 들어가면 user-agent 정보를 전달하는데

requests의 user-agent 정보를 내 것으로 바꿔주면 된다.

 

먼저 아래의 사이트에서 자신의 agent 정보를 복사한다.

https://www.whatismybrowser.com/detect/what-is-my-user-agent 

 

What is my user agent?

Every request your web browser makes includes your User Agent; find out what your browser is sending and what this identifies your system as.

www.whatismybrowser.com

 

import requests

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)..."} # 개인마다 다르다
url = "https://squidcoding.tistory.com"

result = requests.get(url, headers = headers)

 

headers 변수 안에 딕셔너리를 만들고 "User-Agent"의 값으로 아까 복사했던 정보를 붙여넣기 한다.

그다음 requests.get의 url 정보 옆에 headers의 정보를 추가로 입력하면 끝이다.

오늘은 파이썬을 이용한 웹 스크래핑에 대해 알아보겠습니다

 

웹 페이지를 가져와서 데이터를 추출해 내는 행위를

웹 크롤링(crawling) 혹은 웹 스크래핑(scraping)이라고 합니다.

 

웹 스크래핑을 하려면 우선 기본적인 html 이해도가 필요합니다.

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <header></header>
  <div></div>
</body>
</html>

html은 태그와 속성으로 구성되어 있습니다.

 

웹 스크래핑을 하는 방법은 우선 html에서 추출하고 싶은 데이터가 있는 태그를 찾고

for문, if문 같은 파이썬의 다양한 문법을 이용해서 데이터를 필터링하는 형식입니다.

 

 

 

requests

 

파이썬으로 html을 읽기 위해서는

링크를 입력했을 때 그 링크로 접속해줄 도구가 필요합니다.

 

pip install requests

터미널에 위의 코드를 입력해서 requests 라이브러리를 설치해줍니다.

 

import requests

url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%A3%BC%EC%8B%9D%EC%8B%9C%EA%B0%80%EC%B4%9D%EC%95%A1"
result = requests.get(url)

담고 싶은 데이터가 있는 주소를 url 변수에 저장하고 

requests.get(url) 을 입력해서 페이지에 있는 모든 html 정보를 result 변수에 저장합니다.

 

위의 url은 네이버에 주식 시가총액을 검색했을 때 나오는 주소입니다.

위에서 선택된 부분만 추출해서 파일에 저장하는 실습을 해보겠습니다.

 

 

BeautifulSoup

 

이제 requests로 불러온 html 정보에서 우리가 원하는 정보를 찾아야 합니다.

그걸 가능하게 해주는 라이브러리가 BeautifulSoup 라이브러리입니다

 

pip install beautifulsoup4

터미널에 위의 코드를 입력해서 BeautifulSoup 라이브러리를 설치해줍니다.

 

import requests
from bs4 import BeautifulSoup

url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%A3%BC%EC%8B%9D%EC%8B%9C%EA%B0%80%EC%B4%9D%EC%95%A1"
result = requests.get(url)
soup = BeautifulSoup(result.text, "lxml")

 

result.text 는 아까 가져온 html 정보에서 text만 추출합니다.

이제 그것을 BeautifulSoup이 사용할 수 있는 표현 방식으로 변환시켜 주어야 합니다.

BeautifulSoup에는 변환을 시켜주는 파서(parser) 기능이 있습니다.

 

parser는 4가지의 종류가 있고 각각 장단점이 있지만 

속도가 빠른 lxml 을 사용하는 것을 권장하고 있습니다.

 

 

위의 코드는 웹 스크래핑을 하기 위해 꼭 해야 하는 작업입니다.

 

이제 페이지에서 가져올 데이터가 속해있는 태그를 찾아야 합니다.

 

우선 F12 버튼을 눌러서 개발자 모드를 띄워줍니다.

화살표가 가리키는 버튼을 클릭하면 마우스로 원하는 태그를 찾을 수 있습니다.

 

 

이렇게 표로 정리되어 있는 형식은 보통 <table> 태그 안에 있습니다.

 

 

<table> 태그의 내용은 <tbody> 태그 속에 있습니다.

그리고 <tr> 태그는 table row 를 뜻하며 <tbody>의 각 행을 구성합니다.

 

이제 우리가 할 일은 다음과 같습니다.

 

1. <table> 태그의 class 속성을 이용해서 특정 <table>을 선택한다.

2. 선택한 <table>에 있는 <tbody>, 그 밑에 있는 <tr> 태그들을 리스트에 담는다.

3.  반복문을 돌려서 <tr> 태그의 원하는 정보를 추출한 다음 파일에 옮겨 닮는다.

 

 

 

먼저 BeautifulSoup의 find 메소드로 <table> 태그를 선택합니다.

 

import requests
from bs4 import BeautifulSoup

url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%A3%BC%EC%8B%9D%EC%8B%9C%EA%B0%80%EC%B4%9D%EC%95%A1"
result = requests.get(url)
soup = BeautifulSoup(result.text, "lxml")

table = soup.find("table", {"class":"lsttype_tb"}) # class가 lsttype_tb 인 table중 첫번째

 

이제 <tr> 태그를 저장합니다.

find 메소드는 찾는 태그가 여러 개 존재해도 첫 번째 태그만 저장합니다.

하지만 find_all 메소드를 사용하면 모든 태그를 리스트에 담을 수 있습니다.

 

import requests
from bs4 import BeautifulSoup

url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%A3%BC%EC%8B%9D%EC%8B%9C%EA%B0%80%EC%B4%9D%EC%95%A1"
result = requests.get(url)
soup = BeautifulSoup(result.text, "lxml")

table = soup.find("table", {"class":"lsttype_tb"})
tr_list = table.find("tbody").find_all("tr") # <table> > <tbody> > <tr>

 

이러면 tr_list 안에는 <tr> 태그들의 정보가 담겨있습니다.

 

이제 for문을 사용해서 데이터를 추출해야 합니다.

 

그림을 보면

 

종목 이름: <tr> 태그의 첫 번째 <a> 태그

가격: <tr> 태그의 첫 번째 <td> 태그인 것을 알 수 있습니다.

 

import requests
from bs4 import BeautifulSoup

url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%A3%BC%EC%8B%9D%EC%8B%9C%EA%B0%80%EC%B4%9D%EC%95%A1"
result = requests.get(url)
soup = BeautifulSoup(result.text, "lxml")

table = soup.find("table", {"class":"lsttype_tb"})
tr_list = table.find("tbody").find_all("tr")

for tr in tr_list:
    name = tr.find("a").get_text() # a 태그의 text 부분을 추출
    price = tr.find_all("td")[0].get_text()
    
    with open("stock_quote.txt","a",encoding="utf8") as f: 
    	f.write(f"{name}: {price}\n")

 

for문을 돌려서 각 tr에 있는 이름과 가격을 추출해서 파일에 담았습니다.

 

 

결과를 보면 가격이 천차만별입니다.

마지막으로 여기서 가격이 500,000원 미만인 것들만 담아보겠습니다.

 

하지만 문제가 있습니다.

가격 정보를 보면 71,500 같이 쉼표가 포함되어있는 문자열입니다. 

 

우선 replace() 함수를 사용해서 쉼표를 ""(빈 문자열)로 바꾸고

int 형 변환을 해야 합니다.

import requests
from bs4 import BeautifulSoup

url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%A3%BC%EC%8B%9D%EC%8B%9C%EA%B0%80%EC%B4%9D%EC%95%A1"
result = requests.get(url)
soup = BeautifulSoup(result.text, "lxml")

table = soup.find("table", {"class":"lsttype_tb"})
tr_list = table.find("tbody").find_all("tr")

for tr in tr_list:
    name = tr.find("a").get_text() # a 태그의 text 부분을 추출
    price = tr.find_all("td")[0].get_text()

    price = price.replace(",", "")
    if int(price) >= 500000: # 만약 가격이 50만원 이상이면 continue 
        continue
    
    with open("stock_quote.txt","a",encoding="utf8") as f: 
    	f.write(f"{name}: {price}\n")

 

 

 

이렇게 웹 스크래핑으로 주식 정보를 파일에 옮겨 닮아 보았습니다.

 

웹 스크래핑의 진정한 힘은 엄청난 양의 데이터를 받아와서

내가 원하는 대로 가공을 할 수 있다는 점입니다.

 

간단히 정리해 볼 생각이었는데 글이 너무 길어졌네요 ^^

 

끝까지 봐주셔서 감사합니다.

 

 

자바스크립트에서 객체나 배열을

 

복사하는 방법에 대해 알아보겠습니다.

 

 

복사에는 얕은 복사와

 

깊은 복사(Deep Copy)가 있습니다.

 

 

얕은 복사(Shallow Copy)란?

 

과일을 예로 들어보겠습니다.

See the Pen by jisupark123 (@jisupark123) on CodePen.

 

 

fruitsAfruitsB에 복사하고

 

fruitsB에만 "melon"을 집어넣었는데 

 

출력 결과 두 배열 모두 바뀐 것을 볼 수 있습니다.

 

우리는 단순히 값을 복사 했다고 생각하지만 컴퓨터의 내부를 들여다보면 다릅니다.

 

      100      100
fruitsA fruitsB
["apple", "banana"] ["apple", "banana"]

 

 

fruitsB = fruitsA 라고 입력하면 자바스크립트는 단순히 값을 복사하지 않고

 

fruitsA의 메모리 주소 ex)100 를 fruitsB와 공유하게 됩니다.

 

이렇게 하면 메모리를 절약할 수 있기 때문이죠.

 

 

그래서 fruitsB의 값을 바꾸면 같은 메모리 주소를 공유하는 fruitsA의 값도 바뀌게 됩니다.

 

이렇게 이름만 같은 변수로 복사하는 것을 얕은 복사(참조 복사)라고 부릅니다.

 

 

깊은 복사(Deep Copy)란?

 

깊은 복사는 얕은 복사의 반대말입니다.

 

깊은 복사를 하게 되면 복사한 두 배열이 완전히 독립적으로 작동하게 됩니다.

 

 

See the Pen by jisupark123 (@jisupark123) on CodePen.

 

 

 

처음 코드와의 차이점은

const fruitsB = fruitsA

에서

const fruitsB = [...fruitsA]​

로 바뀐 것입니다.

 

전개 연산자(...)는 말 그대로 배열, 객체의 요소를

코드 내에서 전개시키는 역할을 합니다.

 

위의 코드에서 ...fruitsA

fruitsA 에서 [ ] 를 뺀 "apple", "banana" 와 같습니다.

 

 

아래 코드는 전개 연산자를 응용하는 방법입니다.

 

 

See the Pen by jisupark123 (@jisupark123) on CodePen.

 

 

전개 연산자가 쓰여진 자리에 배열이 전개되는 것뿐이므로

 

이런 식으로 응용할 수도 있습니다.

[Javascript] VS [Python] 문법비교 (자료형)
2021. 10. 9. 14:28 - 프론트맨

오늘은 자바스크립트와 파이썬의 자료형에 대해 살펴보겠습니다.

 

 

자바스크립트의 기본 자료형입니다.

 

 

숫자형

let a = 22
let b = 22.222

숫자형은 자바스크립트에서 number 로 표현됩니다.

숫자형은 정수와 부동소수점 숫자를 나타냅니다.

Infinity -Infinity NaN 같은 특수한 값도 숫자형에 포함됩니다.

 

Infinity는 무한대를 표현합니다.

3 / 0 // 무한대

-Infinity 음의 무한대를 표현합니다.

0 - Infinity // 음의 무한대

NaN 은 계산 중에 에러가 발생했다는 것을 알려주는 값입니다.

a = 'hello'
console.log(`${a / 100}`) // 문자열을 숫자로 나눔
console.log(Number(a)) // 문자열을 숫자열로 형 변환

 

문자형

const a = 'hello'
const b = "hi"
const c = `${a + b}` // 'hellohi'

문자열을 선언하는 방법은

작은따옴표 ' ' 큰 따옴표 " " 백틱 ` ` 으로 세 가지가 있습니다.

 

 

 

불린형

const a = true
const b = false

불린(boolean)형은 참(true) 혹은 거짓(false)을 나타내는 값입니다.

 

 

 

 

null

 

null 은 자바스크립트에서 존재하지 않는 값, 알 수 없는 값의 의미로 쓰입니다.

 

 

 

 

undefined

 

let a; // 선언만 하고 할당하지 않음
const b; // const는 선언할 때 할당하지 않으면 에러를 발생함

undefined는 자바스크립트에서 할당하지 않은 상태를 나타냅니다.

const로 변수를 선언하면 바로 값을 할당해 주어야 합니다.

 

 

 

객체(object)

 

객체를 사용하면 데이터를 보다 쉽게 관리할 수 있습니다.

함수 (function), 배열(array), 클래스(class) 등의 자료형이 모두 객체에 포함됩니다.

 

자바스크립트에선 자료의 타입을 확인할 때 typeof 를 사용합니다.

const a = typeof 11.111
const b = typeof "hello"

console.log(a, b) // number string

 

 

 

 

 

파이썬의 자료형에 대해 살펴보겠습니다.

 

 

숫자형

 

 

파이썬의 숫자형에는 int (정수를 표현), float (소수점 이하를 표현)이 있습니다.

a = int(11.111) # 정수로 변환
b = float("11.111") # 실수로 변환

print(a,b) # 11 11.111

 

 

 

시퀀스

 

 

문자열, 리스트, 튜플이 시퀀스에 속합니다.

a = str(11) # 문자열로 변환
b = [1,2,3] # 리스트(배열) 자료형
c = (1,2,3) # 튜플 자료형

튜플은 리스트와 비슷하나 값을 바꾸지 못한다는 특징이 있습니다.

시퀀스 자료형은 인덱스로 접근 가능하기 때문에 for문으로 다룰 수 있습니다.

 

 

 

매핑

 

 

dict (딕셔너리)가 매핑에 속합니다.

dictionary는 키(key)와 값(value)으로 이뤄져 있습니다.

apple = {"color":"red",
	 "taste":"sweet",
         "shape":"round"}
         
print(apple["color"]) # red

이름[키]의 형태로 딕셔너리의 값에 접근할 수 있습니다.

 

딕셔너리 또한 for문과 함께 쓰입니다.

apple = {"color":"red",
	 "taste":"sweet",
         "shape":"round"}
         

for key in apple:
	print(key, key[value])  # color red
 				# taste sweet
 				# shape round

딕셔너리를 for문에 넣으면 키(key) 값을 반환합니다.

 

 

 

 

불린형

 

a = True
b = False

자바스크립트는 true false 로 앞글자가 소문자이고

파이썬은 True False 로 앞글자가 대문자입니다.

 

 

 

 

집합

 

집합(set)은 파이썬의 독특한 자료형입니다.

color = {"red", "orange", "yellow"} # 집합 자료형 선언

a = [1,1,2,3]
a = set(a) # 집합 자료형으로 변환

print(a) # {1,2,3}

집합 자료형은 원소의 순서가 유지되지 않고 중복을 허용하지 않는 특징이 있습니다.

위의 코드처럼 중복을 제거하는 용도로 사용할 수 있습니다.

 

 

"프로그래밍 언어는 자료형만 알아도 반이다" 라는 말이 있습니다.

자료형은 언어의 기본이자 핵심이기 때문이죠.

 

처음 보았을 때는 다소 많고 복잡해 보일 수 있지만

프로그래밍을 하다 보면 꾸준히 맞닥뜨리는 것이 자료형이기에 저절로 외워질 것입니다.

 

그러니 부담 없이 즐겁게 코딩하시길 바랍니다. ^^

 

자바스크립트를 배우다보니

파이썬과 공통점이 정말 많다는 걸 느꼈습니다.

 

그렇다보니 헷갈리는 부분도 많았는데

두 언어 문법의 다른 점에 대해 정리해 보았습니다.

 

 

변수 선언

// Javascript

var a = 0
const b = 0 // 바꿀 수 없음
let c = 0   // 바꿀 수 있음

 

# Python

a = 0

 

 

변수 여러개 한번에 선언

// Javascript

const [a,b,c] = [1,2,3] 
// const a = 1
// const b = 2
// const c = 3

 

# Python

a,b,c = 1,2,3

# a = 1
# b = 2
# c = 3

변수 선언은 파이썬이 더 간편한 걸 볼 수 있습니다.

 

 

화면에 출력하기

// Javascript
				
console.log('hello') // hello
console.log('hello' + 'guys') // helloguys
console.log('hello', 'guys') // hello guys

const a = 10
console.log(a)	// 10
console.log('hello', a) // hello 10

const b = 20
console.log(`20+10=${a+b}`) // 20+10=30 ( `` 백틱 기호 사용 )

 

 

# Python
			  
print('hello') # hello
print('hello' + 'guys') # helloguys
print('hello', 'guys') # hello guys

a = 10
print(a)	# 10
print('hello', a) # hello 10

b = 20
print(f"20+10={a+b}") # 자바스크립트의 ``(백틱)과 비슷하다
print('20+10={}'.format(a + b)) # 20+10=30 ( format 함수 사용)

자바스크립트는 console.log

파이썬은 print

나머지는 정말 비슷하네요 ㅎㅎ

 

 

전체적으로 보면 파이썬이 자바스크립트보다 문법이 간편합니다.

그래도 C언어 같은 헬(?)언어랑 비교하면 자바스크립트가 훨씬 낫습니다.

 

개인적으로 프로그래밍을 처음 시작하는 분에게는

파이썬을 먼저 배우시는 걸 추천합니다.

 

저도 코딩을 파이썬으로 입문했는데

생각했던 것보다 코딩을 쉽게 느꼈고

흥미가 올라가서 재밌게 공부했던 기억이 있습니다.

 

저는 다음에도 [Javascript][Python] 문법 비교 편으로 돌아오겠습니다.

 

행복한 하루 되세용

 

 

 

'Programming > 언어 비교' 카테고리의 다른 글

[Javascript] VS [Python] 문법비교 (자료형)  (0) 2021.10.09