본문 바로가기

함수

Web Crawler 003 - 링크 찾기 및 삭제하기 (Adding and deleting links) 이번에는 기본 URL 에서 크롤링 하려고 찾은 링크들을 파일에 저장을 하려고 합니다. 멀티 프로세싱 혹은 멀티 쓰레딩 작업을 통해서, 하나의 과정은 링크를 찾아 파일에 넣어 저장하고, 다른 하나의 과정은 이렇게 찾은 링크들을 크롤링하게 하려고 합니다. 여기에서 찾은 링크를 파일에 저장을 할 시에 중복되는 링크도 존재하기 마련입니다. 그래서 그런것들의 중복 크롤링을 막기 위해, 애초에 크롤링할 파일에 해당 링크 URL 이 존재하면 추가적으로 append 하지 않게 하면 됩니다. 시작해 볼까요? 우선 이미 만들어 둔 파일에 링크를 더해가는 함수를 정의하겠습니다. ▼ append 모드로 해당 경로를 열어줍니다. 그리고 이것을 file 로 명명하겠습니다.▼ 파일을 열어 전달해 줄 데이터 값을 넣고 뒤에는 개행문.. 더보기
[Swift] 028 Functions and Closures - 2 (함수의 다중 파라미터 ) for beginners Functions다중 파라미터 함수Swift의 함수 개념은 앞서 살펴보았듯이 수학적인 개념 이상의 것입니다. 넓은 의미에서 Swift의 함수는 한 개 이상의 파라미터를 받아들이고 숫자뿐만 아니라 다른 타입도 받아들인다는 점에서 더 유연하고 강력합니다. 한 개 이상의 파라미터를 받아들이고 Doouble형 이외의 타입도 반환하는 함수를 만들어보겠습니다. 다중 파라미터 함수▼ func buildASentence(subject : String, verb : String, noun : String) -> String { return subject + " " + verb + " " + noun + "!" } buildASentence("Swift", verb: "is", noun: "cool") buildASent.. 더보기
[Swift] 027 Functions and Closures - 1 (함수 코딩하기 ) for beginners 함수와 클로저 사용하기(Writing Functions and Closures)이제까지 변수, 상수, 딕셔너리, 배열, 루프 구문, 제어 구문 등 많은 내용을 알아보았습니다. REPL 명령행 인터페이스 및 Xcode의 플레이그라운드 기능을 사용해 간단한 코드를 입력하며 Swift 언어를 조금 알아 보았습니다. 그러나, 지금까지 코드를 몇 개 입력하고 결과를 관찬ㄹ하는 실험 수준에만 머물렀는데, 이제는 코드를 조금 더 체계화할 필요성이 있습니다. 이제부터는 간결하지만, 다시 사용할 수 있는 함수를 사용해 Swift 코드를 좀 더 깔끔하게 정리하고자 합니다. 함수(The Function)학창시절 함수에 대해 공부를 해 본적이 있을겁니다. 기본적으로 함수는 산수식으로 입력을 받아 계산을 수행하고 결과를 제공하.. 더보기
[PYTHON 3] Tutorials 37. Lambda 이번 시간에는 Lambda 에 대해 알아보려고 합니다. 프로그래밍 언어를 조금이라도 다뤄본 사용자라면 친숙한 어휘일텐데, 그렇지 못한 초심자들이라면 상당히 낯선 단어이기도 합니다. Lambda(한글식 호명은 '람다'라고 읽으면 됩니다.)는 일종의 작은 함수 정도로 생각하시면 됩니다. 그 동안 어떤 역할을 수행하게 하는 함수를 정의하고 인자를 전달하고 함수를 호출하고 하여 코딩을 하여왔습니다. 그러나 Lambda는 함수와 달리 함수명이 없습니다. 그리고 여러번 호출해서 사용하지 않고 1회성으로 잠깐 사용하는 속성(단기) 함수라고 볼 수도 있습니다. 함수명만 없을 뿐이지, 전달되는 인자는 여전히 표기하여야 하는 공통점이 있습니다. 간단하게 기본적인 'Lambda'를 알아보겠습니다. 기본적인 Lambda의 표.. 더보기
[PYTHON 3] Tutorials 28. Init - 초기화 이번 시간에는 지난 시간에 다룬 클래스에서 초기화(initialization)에 대해 알아보고자 합니다. 파이썬에서 초기화란 클래스를 만들고, 객체가 클래스의 함수(메소드)에 접근을 할 때 아무런 함수(메소드)를 실행하지 않아도 처음부터 객체 생성과 동시에 실행되는 값들을 의미 합니다. 가령, 사람으로 치자면 처음부터 타고 나는것들이 해당이 되겠는데, 머리, 몸, 다리, 팔 등등... 이는 누구나 가지고 태어나듯이 객체가 생성됨과 동시에 가지고 있게 되는 것들을 일컬어 초기화 혹은 __init__ 으로 명명합니다. 역시 말보다는 예제를 통해서 보는게 훨씬 이해가 잘 되겠죠.. 시작해 보겠습니다. 사람(Person)이라는 클래스를 정의해 보겠습니다.▼ 사람의 초기값을 설정해주기 위해 아래와 같이 __ini.. 더보기
[PYTHON 3] Tutorials 27. Classes and Objects - 클래스, 객체 이번 시간에는 요즘 사용하는 프로그래밍 언어의 중심인 클래스와 객체에 대해 알아보고자 합니다. 현재 시장에서 사용하는 대부분의 언어가 객체 지향 프로그램(OOP: Objects Oriented program)이라고 해도 과언이 아닙니다. 물론 전부라고는 할 수 없으나 많은 언어에서 객체화를 지향하는 이유는 그만한 장점을 지니고 있기 떄문입니다. 앞서 다룬 함수 파트에서, 함수를 사용하는 이유 중 하나가 재사용성을 높이기 위해서라고 했습니다. 객체도 마찬가지입니다. 함수 + 함수 + 함수 를 하나의 클래스로 묶어놓고 이를 별개의 객체로 불러와 사용하면 코드를 수십, 수백, 수천 번 재사용할 수 있기 때문입니다. 잘 이해가 잘 안되신다면 아래의 코드를 예로 설명을 드리면 조금이나마 이해하는데 도움이 되리라 .. 더보기
[PYTHON 3] Tutorials 19. Dictionary 안녕하세요. 이번 시간에는 파이썬에서 다루는 'Dictionary'에 대해 알아보고자 합니다. 딕션너리: 사전. 을 뜻하죠. 쉽게 이해하고 있듯이, 사전을 찾으면 단어:뜻 이렇게 이루어져 있습니다. 이 개념과 동일합니다. 어떤 단어를 찾았는데 그 안에 가지고 있는 의미, 뜻, 내용물이 뭔지 알려주게끔 이루어진 규칙을 말합니다. 이를 프로그래밍에서는 Key, Value 라고 각각 칭합니다. 단어: Key, 뜻: Value 라고 이해하시면 됩니다. 자 그럼 예제를 통해 자세히 알아보겠습니다. 친구라는 변수 안에 친구 이름과 특징을 딕셔너리({})로 넣어 두었습니다. 딕셔너리는 Curly Bracket {} 안에 세미콜론(:) 왼쪽에는 key 값을 오른쪽에는 value 값을 넣어주는게 원칙입니다. 위 코드에서.. 더보기
[PYTHON 3] Tutorials 17. Unpacking Arguments 이번 시간에는 Unpacking Arguments에 대해 알아보도록 하겠습니다. Unpacking 은 말 그대로 꾸러미 같은것을 푼다는 의미입니다. 즉, Arguments 꾸러미를 푸는 것이 어떤것인지 알아보려고 합니다. 자 그럼 시작해 보겠습니다. 간단히 임의로 몇살까지 살 수 있을지에 관한 계산을 할 수 있는 함수를 정의해 보았습니다. 물론, 허구성이며 단순 계산식이니 신빙성은 없는 산술식이라고 하겠습니다. 위의 그림처럼 3개의 parameters를 받는 health_calculator라는 함수를 정의 하였습니다. 나이, 하루에 먹는 사과 개수, 하루에 피는 담배는 얼마인지. 이런걸로만 만든 계산기입니다. 계산을 하고 결과를 answer에 저장하고 출력하게끔 하였습니다. 그리고 'brown'이라고 하.. 더보기
[PYTHON 3] Tutorials 15. Keyword Arguments 안녕하세요. 이번 시간에는 'Keyword Arguments'에 대해서 알아보도록 하겠습니다. 일전의 튜토리얼에서 default arguments에 대해 알아보았는데, 그것의 연장선상에 있다고 생각하시면 되겠습니다. 자 그럼 시작하겠습니다. 우선 silly_sentence라고 하는 임의의 함수를 정의합니다. 여기의 arguments를 위와 같이 3개로 구성하겠습니다. name, action, item 으로 3개의 arguments를 지정해 줍니다. 일전의 튜토리얼에서 default arguments 에 얘기했었는데, 이 경우 argument를 전달해 주지 않았을 경우 함수에서 미리 지정한 default로 그 값을 대신한다는 내용이었습니다. keyword arguments 또한 비슷하다고 여기면 됩니다. .. 더보기
[PYTHON 3] Tutorials 14. Variable Scope 안녕하세요. 이번 시간에는 변수의 범위에 대해서 알아보고자 합니다. 변수의 범위에는 크게 지역변수(Local)와 전역변수(Global)가 있습니다. 지역변수는 특정지역(?)에서만 유효한 경우를 일컬으며, 전역변수는 말 그대로 어디서든 사용 가능한 변수를 말합니다. 말보다는 그림을 보면서 진행하는게 좋겠죠? 그럼 시작하겠습니다. 우선 임의의 숫자를 number 라고 하는 변수에 지정을 해 주었습니다. 역시 임의의 함수 abcd라고 하는 함수를 정의하고 단순히 number 를 프린트 하는 명령어만 가지고 있게 하였습니다. 이번에는 또 다른 함수 xyz 를 정의하고 역시 변수 number 를 출력하게 하였습니다. 두 함수를 정의하였으니 호출하여 사용을 해봐야겠죠? 위 그림과 같이 두 함수를 나란히 호출하였습니.. 더보기
[PYTHON 3] Tutorials 12. Return Value 안녕하세요. 이번시간에는 이전 시간에서 다룬 함수에서 결과값을 어떻게 처리할지 얘기해 보도록 하겠습니다. 앞장에서는 함수를 정의하고 단순히 프린트를 사용하여 그 결과를 나타내도록 하였는데, 이번 시간에는 그 함수에서 다룬 값을 반환(Return)해서 다른 변수에 저장하게 하고 나중에 함수에서 반환받은 값을 담고 있는 변수를 활용할 수 있게 하는데 있습니다. 잘 이해가 안되시면 아래 그림으로 이야기를 이어 가도록 하겠습니다. 우선, 하나의 함수를 선언해 줍니다. 그냥 우스개소리로 데이트 할 수 있는 연령을 단순 계산할 수 있는 함수를 선언해 줍니다. 전달해 줄 인자로는 나이를 넣어주게 하였습니다. 그럼 이 전달받은 my_age로 계산을 하여 girls_age라는 변수에 넣어줍니다. 그리고 그 결과를 반환(.. 더보기
[PYTHON 3] Tutorials 11. Function 안녕하세요. 이번 시간에는 Function(함수)에 대해서 알아보도록 하겠습니다. 프로그램을 공부하시면 대부분의 프로그래밍 언어에서 함수를 얘기합니다. 그럼 함수를 왜 사용하고 어떤 것일까요? 단순하게 생각해보면 재사용성 이라고 말할 수 있을것 같습니다. 똑같은 역할을 하는 코드가 여러번 사용되면 이를 한번 만들어 두고 argument or parameter (함수를 만들때 전달해주는 값들) 값들만 바꾸어 주면 반복적으로 여러번 사용할 수 있을 것입니다. 이로 인해 가용 자원 절약, 코드 가독성 향상 등등 많은 이점을 꾀할 수 있게 됩니다. 각설하고 시작해 보겠습니다. 파이썬에서 함수를 정의할 때에는 앞에 def (definition: 정의) 함수명(전달할 인자): 이렇게 사용할 수 있습니다. def f.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 6. whois 이제 거의 짧은 여정이 끝이 나갑니다. 이번 시간에는 'whois' 를 파이썬으로 구현해 보겠습니다. 1. whois.py 파일을 만들어 줍니다. 2. 여느때와 마찬가지로 os 를 임포트 해 줍니다. 3. whois 를 얻기 위한 함수를 정의해 줍니다. 4. 명령어에 "whois " + url 이 들어갈수 있도록 변수를 지정합니다. 한가지 주의할 점은 whois 뒤에 공백(스페이스)을 넣어 주어야 합니다. 아니면 whois 와 조사할 타겟 사이트가 붙어버려 명령이 수행 안되니까요. 5. 그렇게 지정한 명령어를 프로세스로 지정. 7. 지정된 프로세서를 result 에 넘겨주면서 string 로 컨버팅해줍니다. 8. 이렇게 컨버팅 된 result 를 리턴하면 끝입니다. 9. 이제 확인! 아래와 같이 프린트를.. 더보기