python是面向过程的吗?
1、面向过程:核心是过程二字,过程指的是解决问题的步骤,好比如设计一条流水线,是一种机械式的思维方式。
就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。
2、优缺点:
优点:将复杂的问题流程化,进而简单化。
缺点:扩展性差
3、实例:面向过程式的登录注册程序import json,re
def login():
'''
用户输入
:return:
'''
usename = input('用户名:').strip()
pwd = input('密码:').strip()
tel = input('电话:').strip()
mail = input('邮箱:').strip()
return {
'usename':usename,
'pwd':pwd,
'tel':tel,
'mail':mail
}
def authentication(use_info):
'''
判断用户名和密码等信息是否合法
:return:
'''
is_valid = True # 默认合法
if len(use_info['usename'])==0:
print('用户名不能为空!')
is_valid = False
if len(use_info['pwd'])< 6:
print('密码长度不得小于6位!')
is_valid = False
if len(re.findall('1[0-9]{10}',use_info['tel']))==0:
print('电话格式不对!')
is_valid = False
if not re.search(r'@.*?.com$',use_info['mail']).group(): # 使用Python的r前缀,就不用考虑转义的问题,'*'加个?就可以让'.'采用非贪婪匹配
print('邮箱格式不对')
is_valid = False
return {
'valid':is_valid,
'info':use_info
}
def register(auth):
'''
若输入信息合法则注册,写入文件或数据库
:param auth:
:return:
'''
if auth['valid']==True:
with open('data.json','w',encoding='utf-8') as f:
json.dump(auth['info'],f)
def main():
'''
主逻辑程序
:return:
'''
use_info = login()
auth = authentication(use_info)
register(auth)
if __name__=='__main__': # 直接调用时执行下列程序,被调用时不执行
main()
注意:一般认为, 如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但如果你要处理的任务是复杂的,且需要不断迭代和维护 的, 那还是用面向对象最方便。