python不用class只用def
时间: 2023-10-09 08:04:46 浏览: 285
Python中的函数(def)可以独立使用,而不必使用类(class)。这是Python的一项优点,因为它允许更简单、更直接的代码编写。下面是一些使用函数而不是类的示例:
1. 计算两个数的和
```python
def add(a, b):
return a + b
result = add(3, 5)
print(result) # Output: 8
```
2. 判断一个数是否为偶数
```python
def is_even(num):
if num % 2 == 0:
return True
else:
return False
result = is_even(4)
print(result) # Output: True
```
3. 将列表中的所有数相加
```python
def sum_list(lst):
total = 0
for num in lst:
total += num
return total
result = sum_list([1, 2, 3, 4])
print(result) # Output: 10
```
这些示例表明,Python中的函数可以像类一样用于创建可重用的代码块。使用函数而不是类的主要优点是代码更简洁、易读和易于维护。
相关问题
只用python作点餐系统
在Python中创建一个简单的点餐系统,我们可以设计一个命令行界面(CLI)应用程序,让用户选择菜品、下单和查看订单。以下是一个简化的实现步骤:
1. 定义菜品类(MenuItem):
```python
class MenuItem:
def __init__(self, name, price):
self.name = name
self.price = price
def display_info(self):
print(f"名称: {self.name}, 价格: {self.price}")
```
2. 创建菜品列表:
```python
menu_items = {
"炒饭": MenuItem("炒饭", 10),
"牛肉面": MenuItem("牛肉面", 12),
"披萨": MenuItem("披萨", 15),
# 添加更多菜品
}
```
3. 主函数(ordering_system):
```python
def ordering_system():
order = {}
while True:
print("\n欢迎光临!请输入菜品编号或'结束'退出:")
for index, item in enumerate(menu_items.values(), start=1):
item.display_info()
print(f"{index}. {item.name}")
choice = input()
if choice == '结束':
break
try:
order[menu_items[int(choice) - 1]] = menu_items[int(choice) - 1].price
except IndexError:
print("无效的选择,请重试.")
print("\n您的订单:")
for item, price in order.items():
print(f"{item.name} - {price}元")
total = sum(order.values())
print(f"总价: {total}元")
ordering_system()
```
如果不用JS和CSS,只用Django的admin如何实现?
如果您想在 Django admin 中将错误信息显示在输入框附近,可以使用 Django 的自定义表单和模板标签来实现。具体步骤如下:
1. 创建一个自定义表单,在其中重写 clean() 方法,以便在验证失败时将错误信息添加到输入框附近的标签中。例如:
```python
from django import forms
class MyForm(forms.Form):
my_field = forms.CharField()
def clean_my_field(self):
data = self.cleaned_data["my_field"]
if not data.startswith("hello"):
raise forms.ValidationError("必须以 'hello' 开头")
return data
```
2. 创建一个自定义模板标签,在其中渲染错误信息的容器,并将其插入到输入框附近的位置。例如:
```python
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.simple_tag
def error_message_for_field(field):
if field.errors:
error_message = mark_safe("<div class='error-message'>%s</div>" % field.errors.as_ul())
return mark_safe("%s %s" % (str(field), error_message))
else:
return str(field)
```
3. 在 Django admin 中使用自定义表单和自定义模板标签。例如:
```python
from django.contrib import admin
from .forms import MyForm
from .templatetags.my_tags import error_message_for_field
class MyModelAdmin(admin.ModelAdmin):
form = MyForm
def get_form(self, request, obj=None, **kwargs):
form = super().get_form(request, obj, **kwargs)
for field_name, field in form.base_fields.items():
field.widget = forms.TextInput(attrs={
"class": "input-text",
"placeholder": field.label,
})
return form
def formfield_for_dbfield(self, db_field, **kwargs):
formfield = super().formfield_for_dbfield(db_field, **kwargs)
if formfield.widget.__class__.__name__ == "TextInput":
formfield.widget.render = error_message_for_field
return formfield
admin.site.register(MyModel, MyModelAdmin)
```
这样,当验证失败时,错误信息将显示在输入框附近的标签中。您可以根据需要自定义容器的样式和位置。
阅读全文