爬虫技术是做什么的(快速入门 Python 基础教程)

wufei123 发布于 2024-01-28 阅读(138)

python这篇文章主要面向有一定编程基础的人们,帮助他们快速入门 Python我在网络上搜索了一圈,没找到适合已经学习其他编程语言的程序员学习 Python 的线上课程或资源,所以就自己写了这篇 Python 教程。

这篇文章主要是包含 Python 的基础知识(稍后会添加更深的内容),所以你可以快速开始学习目录设置环境Hello World字符串数字浮点数布尔值列表元组集合字典if..else循环函数类模块真值与假值。

异常处理设置环境安装 Python 3我推荐你使用 VS Code 代码编辑器,它有很多插件,你可以很快设置好环境Hello worldprint("Hello world") 如果你已经知道编程基础知识,你大概知道如何运行程序。

将程序保存为 .py 后缀的文件,然后运行 python hello.py 或 python3 hello.py在这篇教程中,我们都使用 Python 3Python 2 在 2020 年就不更新了,所以最好是使用最新的版本。

变量和数据类型变量可以包含字母、数字和下划线字符串# This is comment in Python msg_from_computer = "Hello"# String another_msg =。

Hello in single quote# This is also a String.print(msg_from_computer + " World..!") # Type will return the data type.

print(type(msg_from_computer)) # . We will see the explanation of this later.数字22*32**7(2+3

)*4浮点数2.70.1+0.2# 0.32*0.1# 0.2拼接的时候要注意:count = 5 print("I need" + count + "chocolates") # This line will throw error. As count is a integer, you have to type cast it.

print("I need" + str(count) + "chocolates") # This will work布尔值True# First letter is capsFalse bool(

"some value") # Returns True bool("") # Returns False bool(1) # Returns True列表列表其实就是数组在 Python 里,把它们叫作列表。

列表是有序的numbers = ["one", "two", "three"] numbers[0] # one numbers[-1] # three. This is awesome. If we pass negative value Python will start from the end.

numbers[-2] # two len(numbers) # 3. It just returns the length numbers.append("four") # Append will add the element to the last. ["one", "two", "three", "four"]

numbers.insert(1, "wrong_one") # Insert will insert the particular value to the appropiate position. ["one", "wrong_one", "two", "three", "four"]

# Deleting a value is somewhat weird del numbers[1] # Will delete the value in the appropiate position. "one", "two", "three", "four"]

# Pop will help you to remove the last element of an array popped_element = numbers.pop() print(popped_element)

# fourprint(numbers) # ["one", "two", "three"]# Remove elements by value numbers.remove("two") # ["one", "three"]. This will remove only the first occurence of an array.

# Sorting alpha = ["z", "c", "a"] alpha.sort() print(alpha) # ["a", "c", "z"] Sorting is permanent. now `alpha` is sorted permanently

alpha.sort(reverse=True) print(alpha) #["z", "c" , "a"] Reverse sorting. alpha = ["z", "c", "a"] print

(sorted(alpha)) # ["a", "c", "z"] This will just return the sorted array. It wont save the sorted array to the variable itself.

print(alpha) # ["z", "c", "a"] As you can see, its not sorted# Reversing an array nums = [10, 1, 5] nums.reverse()

print(nums) # [5, 1, 10] It just reverses an array. It means it reads from last. Its not sorting it. Its just changing the chronological order.

# Slicing elements alpha = [a, b, c, d, e] alpha[1:3] # [b, c]. The first element is the starting index. And Python stops in the item before the second index.

alpha[2:5] # [c, d, e] alpha[:4] # [ a, b, c, d] In this case, the first index is not present, so Python startes from the beginning.

alpha[:3] # [a, b, c] alpha[3:] # [d, e] In this case, last index is not present. So it travels till the end of the list.

alpha[:] # [a, b, c, d, e] There is no starting or ending index. So you know what happens. And this helps you in copying the entire array. I think I dont have to explain that if you copy the array, then any changes in the original array wont affect the copied array.

another_alpha = alpha # This is not copying the array. Any changes in alpha will affect another_alpha too.

元组元组和列表类似,但是不可变的也就是说,你不能给元组增加元素,只能读取元素和列表一样,元组也是有序的nums = (1, 2, 3) print(nums) # (1, 2, 3)print(nums[0])

# 1print(len(nums)) # 3 empty_tuple = () # empty tuple. Length is zero. num = (1, ) # Note the trailing comma. When defining a single element in the tuple, consider adding a trailing comma.

num = (1) print(type(num)) # It wont return a tuple. Because there is no trailing comma.

# Creating a new tuple from the existing tuple nums = (1, 2, 3) char = (a, ) new_tuple = nums + char

print(new_tuple) # (1, 2, 3, a)集合集合是无序的,元素不可重复alpha = {a, b, c, a} print(alpha) # set([a, c, b]) As you can see, duplicates are removed in sets. And also the output is not ordered.。

# Accessing items in set# You cant access by index because Sets are unordered. You can access it only by loop. Dont worry about the for loop, we will get that in-depth in the following section.

for ele in alpha: print(ele) # To add element into the set alpha.add(s) # add can be used to insert only one element. If you want multiple elements, then update will be handy

alpha.update([a, x, z]) # set([a, c, b, x, z]) Remember duplicated are removed.# Length of the alpha

len(alpha) # 5# Remove the element from the set alpha.remove(a) alpha.discard(a) # Its safer to use discard than remove. Discard will never throw an error even if the element is not present in the set but remove will do.

字典Python 中字典的形式是键-值字典是无序的user = {id: 1, name: John wick, email: john@gmail.com} user[id] # 1 user[name

] # John wick# Length of the dict len(user) # 3# Add new key-value pair user[age] = 35# To get all the keys

keys = user.keys() # [id, name, email, age]. This will return a list.# To get all the valuesvalues = user.values()

# [1, John wick, john@gmail.com]# To delete a key del user[age] # Example of nested dict. user = {

id: 1, name: John wick, cars: [audi, bmw, tesla], projects: [ { id: 10, name: Project 1

}, { id: 11, name: Project 2 } ] } # We will see, how to loop through the dict in for loop section.

if..else你可能已经知道 if..else 语句是怎样的,这里我们还是举个例子吧:a = 5 b = 10 # See for the indentation. Indentations are very important in Python. Python will throw error if indentations are proper.

if a == 5: print(Awesome) # and is equivalent to && if a == 5 and b == 10: print(A is five and b is ten

) # if else statement. This is same as most of the languages.if a == 5: print(A is five) elif a == 6:

print(A is six) elif a == 7: print(A is seven) else: print(A is some number) # or is equivalent to ||

if a < 6 or a == 10: print(A should be less than 6 or should be equal to ten) # not is equivalent to !

if not a == 10: print(A is not equal to 10) # This is the short-hand notation of if statement.if a == 5:

print(A is five) # Short-hand for if-else statement.print(A is five) if a == 5 elseprint(A is not five

) 循环Python 有两种循环:ForWhilewhile 循环# The following while print till 5. Remember the indentation.i=0while

i<=5:print(i)i+=1# Using brake or continue in while loopi=0whilei<=5:print(i)i+=1ifi==2:break# You can try using continue here

# Here comes the interesting part. While loop has else part. Else part will execute once the entire loop is completed.

i=10whilei<=15:print(i)i+=1else:print(Completed)# Output101112131415Completed# But if you are using break in the loop, then Python will break out of the entire loop and it wont execute else part.

i=10whilei<=15:print(i)i+=1ifi==13:breakelse:print(Completed)# Output101112For 循环# For loops like for(i=0; i<5; i++) are not mostly used in Python. Instead, Python insists on iterating over items

arr = [a, b, c, d, e] for ele in arr: # Prints every element in an arrayprint(ele) word = "python"

for char in word: # Prints every char in the wordprint(char) # You can use break, continue and else part in for-loop also.

# When talking about for loops, I noticed that most resources have also mentioned about range() function. (We will deal with functions later part of this article.)

# range() function will generates a sequence of numbers.# range(start, stop, step)# start - optional, the starting number. Default is 0. This number is included in the sequence

# stop - mandatory, the ending number. This number is excluded in the sequence# step - optional, increments by. Default is 1.

range(3) # This code generates a sequences from 0 to 2. range(1, 4) # This code generates a sequence from 1 to 3.

range(1, 8, 2) # This code generates a sequence with 1, 3, 5, 7for ele in range(3): # Prints from 0 to 2.

print(ele) # In the below example, you can see I have used range to iterate through an array with index.

forindex in range(0, len(arr)): print(arr[index]) dict = {name: John wick} # You can iterate through a dictionary. items() will return both keys and values. You can also use keys() and values() if needed.

for key, value in dict.items(): print(key + " is " + value) # You can also use a built-in function enumerate(). enumurate() will return a tuple with index. It is mostly used to add a counter to the iterable objects in Python.

forindex, value in enumerate(arr): print(value + " is present in " + str(index)) 函数defprints_hello_world

(): print(Hello world from Python) prints_hello_world() # Return statementdefprints_something(something)

:return something + from Python print(prints_something(Hello world)) # If you pass wrong number of arguments like two or three arguments to this function then Python will throw an error.

print(prints_something()) # Default parameter. I think its common in most languages now.defprints_something

(something = Hello world): print(something + from Python) # keyword arguments. You can pass explicitly which parameter should be matched. In this way, you dont have to send the arguments in order just explicitly mention the parameter name.

defmovie_info(title, director_name, ratings): print(title + " - " + director_name + " - " + ratings) movie_info(ratings=

9/10, director_name=David Fincher, title=Fight Club) # Arbitrary number of arguments# Sometimes, you dont know how many arguments are passed. In that case, you have ask Python to accept as many arguments as possible.

deflanguages(*names): print(names) # (Python, Ruby, JavaScript, Go). This is a tuple.returnYou have mentioned

+ str(len(names))+ languages print(languages(Python, Ruby, JavaScript, Go)) # You have mentioned 4 languages

deflanguages(fav_language, *names): print(names) # (Ruby, JavaScript, Go)returnMy favorite language is

+ fav_language+ . And Im planning to learn other + str(len(names))+ languages too print(languages(

Python, Ruby, JavaScript, Go)) # My favorite language is Python. And Im planning to learn other 3 languages too

# Arbitrary keyword arguments# These types of arguments are useful when you dont know what kind of parameters are passed. In the previous case, its useful when you dont know how many number of parameters are passed but in this case, you dont know what type of information will be passed.

defuser_info(**info): print(info) # {id: 1, name: Srebalaji, fav_language: [Python, Ruby]} This is a dictionary

# Arbitrary keyword args will always expect to mention the parameters explicitly user_info(id=1, name=

Srebalaji, fav_language=[Python, Ruby]) # The below code will throw error. There is no keyword arguments.

user_info(1, Srebalaji) defuser_info(id, name, **info): print(info) # {fav_language: [Python, Ruby], twitter_handle: @srebalaji}

user_info(1, Srebalaji, fav_language=[Python, Ruby], twitter_handle=@srebalaji) 类# Python is general purpose and also object oriented language.

# Its a convention that the class name starts with caps. But Python doesnt throw any error if you are not following it.

classAnimal():# This is the constructor.# As you can see in every method of the class I have passed self as the first parameter. The first parameter is always expected to be the current instance of the class and it is mandatory to pass the instance in the first parameter. And you can name that variable whatever you like.

def__init__(self, name): self.name = name defeat(self): print(self.name + eats) defsleep

(self): print(self.name+ sleeps) # Initiating a class dog = Animal(harry) dog.eat() print(dog.name)

# As you can see, name attribute is also avaiable in public. # It can even be modified. dog.name = Rosie

print(dog.name) # Rosie# Technically there is no way to make private attrbiutes in Python. But there are some techniques Python devs are using it. I will try to list out some.

# Protected attributes.# These attributes can only be accessed within the class and also by the sub-class.

classPerson():# You can see that I have used different name for the first parameter.def__init__(my_instance, name)

:# name attribute is protected. my_instance._name = name defreads(my_instance): print(my_instance._name +

reads) defwrites(my_object): print(my_object._name + writes) person1 = Person(Ram) person1.reads()

# But the worst part is that instance of the class can still access and change it :P print(person1._name)

# Ram person1._name = I can still change. print(person1._name) # I can still change# Protected can useful sometimes. Lets see how private attributes works. That can be a life saver sometimes.

classPerson():def__init__(self, name):# name attribute is private. self.__name = name defreads

(self): print(self.__name + reads) defwrites(self): print(self.__name + writes) # This is a private method. This cant be accessed outside the class.

def__some_helper_method(): print(Some helper method.) person1 = Person(Ram) person1.reads() # Ram reads

print(person1.name) # Will throw an error. Person object has no attribute name print(person1.__name)

# Will throw an error. Person object has no attribute __name# Private attributes can only be accessed within the class. So its safe. But still there is a catch :P

print(person1._Person__name) # Ram.# You can even change the value person1._Person__name = Hari print(person1._Person__name)

# Hari.# But every dev know that accessing and modifying the private attributes is a bad practice. And Python doesnt really have a clear restriction to avoid it. So you got to trust your peers on this.

# InheritanceclassAnimal():def__init__(self, name): self.name = name defeat(self): print(Animal eats

) defsleep(self): print(Animal sleeps) # Dog is a sub class of AnimalclassDog(Animal):def__init__

(self, name): self.name = name defeat(self): print(Dog eats) dog1 = Dog(harry) dog1.eat()

# Dog eats dog1.sleep() # Animal sleeps模块# Modules helps us to organise code in Python. You can split code in different files and in folders and can access them when you wanted.

# Consider the below file. It has two functions.# calculations.pydefadd(a, b):return a + b defsubstract

(a, b):return a - b # consider another file which we consider as a main file.# main.pyimport calculations calculations.add(

5, 10) # 15 calculations.substract(10, 3) # 7# In the above example, you have imported the file and have accessed the functions in that.

# There are other ways of importing.# You can change the method name if you wantimport calculations as

calc calc.add(5, 10) # 15# You can import specific functions you need.# You can access the function directly. You dont want to mention the module.

from calculations import add add(5, 10) # 15# You can also import multiple functionsfrom calculations

import add, multiple, divide # You can import all the functionsfrom calculations import * add(10, 15

) multiple(4, 5) divide(10, 3) # These will work for classes and variables too.真值和假值# According to Python docs, any object can be tested truthy or falsy.

# Below are the Truthy valuesTrue2# Any numeric values other than 0[1]# non-empty list{a:1}# non-empty dict

a# non-empty string{a}# non-empty Set# Below are the Falsy valuesFalseNone00.0[]# empty list{}# empty dict

()# empty tuple""# empty stringrange(0)# empty set# You can evaluate any object to bool usingbool(any_object)

# returns True or False异常处理# The code which can raise exceptions can be wrapped in try statement. except will handle that exception.

try: some_error_raised except: print(Exception handled) # Every exception in Python will inherit from exception class.

# In the below example, you can see that the NameError is the exception class derived from the main Exception class.

try: some_error_raised except Exception as e: print(Exception raised) print(e.__class__) #

# else block will execute if the code in the try block has raised no exception. This will be useful in many situations.

try: some_error_raised except: print(Exception handled) else: print(No error raised. You can resume your operation here

) # this code will execute if no error is raised in the try block# final block# Code in finally block will execute no matter whether the exception is raised or not.

try: some_error_raised except Exception as e: print(Exception raised) else: print(This will execute if no error is raised in try

) finally: print(This code will run whether the code has error or not.) # Raise your own exception. You can also create your own exception class inherited from Exception class.

try: raise ZeroDivisionError # Python built-in exception classexcept Exception as e: print(e.__class__)

# # Catch a specific exception.try: raise ZeroDivisionError # Python built-in exception class

except TypeError as e: print(Only type error exception is captured) except ZeroDivisionError as e: print(

Only zero division exception is captured) except Exception as e: print(Other execeptions) 需要更多python学习资源咨询,

可以私信我【资料】 谢谢你阅读本文:)

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

宝骏汽车 新闻26330