'''
Hackr.io: 10 Most Common Python Mistakes:
Assigning Mutable Dictionary Keys: Example
'''
my_lst = [1, 2, 3]
my_dct = {my_lst: 'value'} # This will raise a TypeError
'''
Hackr.io: 10 Most Common Python Mistakes:
Assigning Mutable Dictionary Keys: Solution
'''
my_tup = (1, 2, 3)
my_dct = {my_tup: 'value'} # This is the correct approach
'''
Hackr.io: 10 Most Common Python Mistakes:
Forgetting Parentheses To Call Functions: Example
'''
def greet():
return 'Hello!'
message = greet
# This assigns the function object to the variable, not its return value
print(message)
# This will print something like: <function greet at 0x7f4c6d0d59d0>
'''
Hackr.io: 10 Most Common Python Mistakes:
Forgetting Parentheses To Call Functions: Solution
'''
def greet():
return 'Hello!'
message = greet()
# This calls the function and assigns its return value to the variable
print(message)
# This will print: Hello!
'''
Hackr.io: 10 Most Common Python Mistakes:
Forgetting Colons: Example
'''
def greet() # Missing colon here
return 'Hello!'
if True # Missing colon here
print('This is true!')
for i in range(3) # Missing colon here
print(i)
'''
Hackr.io: 10 Most Common Python Mistakes:
Forgetting Colons: Solution
'''
def greet(): # Corrected with a colon
return 'Hello!'
if True: # Corrected with a colon
print('This is true!')
for i in range(3): # Corrected with a colon
print(i)
'''
Hackr.io: 10 Most Common Python Mistakes:
Concatenating Strings And Integers: Example
'''
age = 25
message = 'I am ' + age + ' years old.' # This will raise a TypeError
'''
Hackr.io: 10 Most Common Python Mistakes:
Concatenating Strings And Integers: Solution
'''
age = 25
# Using str() to convert the integer
message_1 = 'I am ' + str(age) + ' years old.'
print(message_1) # Outputs: I am 25 years old.
# Using formatted string (f-string in Python 3.6+)
message_2 = f'I am {age} years old.'
print(message_2) # Outputs: I am 25 years old.
'''
Hackr.io: 10 Most Common Python Mistakes:
Confusing Equality And Assignment Operators: Example
'''
x = 5
if x = 10: # This will raise a syntax error
print('x is 10')
else:
print('x is not 10')
'''
Hackr.io: 10 Most Common Python Mistakes:
Confusing Equality And Assignment Operators: Solution
'''
x = 5
# Correctly using the equality operator
if x == 10:
print('x is 10')
else:
print('x is not 10')
'''
Hackr.io: 10 Most Common Python Mistakes:
Misunderstanding Variable Scopes: Example
'''
x = 10 # Global variable
def change_x():
x = 5 # Local variable with the same name
print(f'Inside function: x = {x}')
change_x() # Output: Inside function: x = 5
print(f'Outside function: x = {x}') # Output: Outside function: x = 10
'''
Hackr.io: 10 Most Common Python Mistakes:
Misunderstanding Variable Scopes: Solution
'''
# Solution 1: Using the 'global' keyword
x = 10
def change_global_x():
global x
x = 5
print(f'Inside function (global x changed): x = {x}')
# Output: Inside function (global x changed): x = 5
change_global_x()
print(f'Outside function: x = {x}') # Output: Outside function: x = 5
# Solution 2: Using different names to avoid confusion
y = 10
def change_local_y(local_y):
local_y = 5
print(f'Inside function: local_y = {local_y}')
# Output: Inside function: local_y = 5
return local_y
y = change_local_y(y)
print(f'Outside function: y = {y}') # Output: Outside function: y = 5
在此程序中,我们只是想从列表中删除所有偶数元素,使用条件检查和 del 语句来完成此操作。从表面上看,这种迭代列表并直接删除项目的方法似乎很好,但它会生成一个 IndexError。
为什么会出现这种情况?好吧,每次删除一个元素时列表都会缩小,但循环会继续使用原始列表 length中的原始索引。
'''
Hackr.io: 10 Most Common Python Mistakes:
Modifying A List While Iterating Over It: Example
'''
numbers = [1, 2, 3, 4, 5]
for i in range(len(numbers)):
if numbers[i] % 2 == 0: # Remove even numbers
del numbers[i]
'''
Hackr.io: 10 Most Common Python Mistakes:
Modifying A List While Iterating Over It: Solution
'''
numbers = [1, 2, 3, 4, 5]
for num in numbers.copy():
if num % 2 == 0: # Remove even numbers
numbers.remove(num)
print(numbers) # Outputs: [1, 3, 5]
'''
Hackr.io: 10 Most Common Python Mistakes:
Using Loops Over List Comprehensions: Example
'''
numbers = [1, 2, 3, 4, 5]
squares = []
for num in numbers:
squares.append(num * num)
print(squares) # Outputs: [1, 4, 9, 16, 25]
'''
Hackr.io: 10 Most Common Python Mistakes:
Using Loops Over List Comprehensions: Solution
'''
# Using a list comprehension
numbers = [1, 2, 3, 4, 5]
squares = [num ** 2 for num in numbers]
print(squares) # Outputs: [1, 4, 9, 16, 25]
让我们看一个超级简单的例子来强调这一点,这显然是一个非常简单的计算矩形面积的函数。虽然看起来很简单,但没有文档字符串,关于预期参数类型、返回类型或用户应该注意的任何注意事项的信息为零。
'''
Hackr.io: 10 Most Common Python Mistakes:
Not Using Docstrings: Example
'''
def rectangle_area(width, height):
return width * height
'''
Hackr.io: 10 Most Common Python Mistakes:
Not Using Docstrings: Solution
'''
def rectangle_area(width, height):
"""
Calculates the area of a rectangle.
Params:
- width (float): The rectangle width.
- height (float): The rectangle height.
Returns:
- float value: The area of the rectangle.
"""
return width * height
'''
Hackr.io: 10 Most Common Python Mistakes:
Not Handling Exceptions: Example
'''
def divide_numbers(numerator, denominator):
return numerator / denominator
result = divide_numbers(10, 0)
print(result) # Throws ZeroDivisionError
'''
Hackr.io: 10 Most Common Python Mistakes:
Not Handling Exceptions: Solution
'''
def divide_numbers(numerator, denominator):
try:
return numerator / denominator
except ZeroDivisionError:
return "Denominator cannot be zero."
result = divide_numbers(10, 0)
print(result) # Outputs: Denominator cannot be zero.
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!