diff --git "a/data/3.python\351\253\230\351\230\266/7.\351\253\230\347\272\247\346\225\231\347\250\213/4.\347\273\223\346\236\204\345\214\226\346\250\241\345\274\217\345\214\271\351\205\215/match_01.json" "b/data/3.python\351\253\230\351\230\266/7.\351\253\230\347\272\247\346\225\231\347\250\213/4.\347\273\223\346\236\204\345\214\226\346\250\241\345\274\217\345\214\271\351\205\215/match_01.json" index ee43462d72bfa9a0b9785ed65683b997d8cc23de..3cc817701ecd7f0a397f74a3b4628156c5dab1c4 100644 --- "a/data/3.python\351\253\230\351\230\266/7.\351\253\230\347\272\247\346\225\231\347\250\213/4.\347\273\223\346\236\204\345\214\226\346\250\241\345\274\217\345\214\271\351\205\215/match_01.json" +++ "b/data/3.python\351\253\230\351\230\266/7.\351\253\230\347\272\247\346\225\231\347\250\213/4.\347\273\223\346\236\204\345\214\226\346\250\241\345\274\217\345\214\271\351\205\215/match_01.json" @@ -1,5 +1,6 @@ { - "source": "match_01.py", + "author": "huanhuilong", + "source": "match_01.md", "depends": [], "exercise_id": 221, "type": "code_options" diff --git "a/data/3.python\351\253\230\351\230\266/7.\351\253\230\347\272\247\346\225\231\347\250\213/4.\347\273\223\346\236\204\345\214\226\346\250\241\345\274\217\345\214\271\351\205\215/match_01.md" "b/data/3.python\351\253\230\351\230\266/7.\351\253\230\347\272\247\346\225\231\347\250\213/4.\347\273\223\346\236\204\345\214\226\346\250\241\345\274\217\345\214\271\351\205\215/match_01.md" new file mode 100644 index 0000000000000000000000000000000000000000..5c7b159091e6de834a01195a3fc508a4c1c90a54 --- /dev/null +++ "b/data/3.python\351\253\230\351\230\266/7.\351\253\230\347\272\247\346\225\231\347\250\213/4.\347\273\223\346\236\204\345\214\226\346\250\241\345\274\217\345\214\271\351\205\215/match_01.md" @@ -0,0 +1,100 @@ +# Python 结构化模式匹配(1) + +Python 3.10 引入了结构化模式匹配。请使用 Python 3.10+ 版本测试本代码。 + +## template + +```python +import argparse + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('command', choices=['push', 'pull', 'commit']) + args = parser.parse_args() + + match args.command: + case 'push': + print('pushing') + case 'pull': + print('pulling') + case _: + parser.error(f'{args.command!r} not yet implemented') +``` + +## 答案 + +```python +import argparse + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('command', choices=['push', 'pull', 'commit']) + args = parser.parse_args() + + match args.command: + case 'push': + print('pushing') + case 'pull': + print('pulling') + case _: + parser.error(f'{args.command!r} not yet implemented') +``` + +## 选项 + +### A + +```python +import argparse + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('command', choices=['push', 'pull', 'commit']) + args = parser.parse_args() + + switch args.command: + case 'push': + print('pushing') + case 'pull': + print('pulling') + case _: + parser.error(f'{args.command!r} not yet implemented') +``` + +### B + +```python +import argparse + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('command', choices=['push', 'pull', 'commit']) + args = parser.parse_args() + + match args.command: + case 'push': + print('pushing') + case 'pull': + print('pulling') + default: + parser.error(f'{args.command!r} not yet implemented') +``` + +### C + +```python +import argparse + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('command', choices=['push', 'pull', 'commit']) + args = parser.parse_args() + + match args.command: + if 'push': + print('pushing') + elif 'pull': + print('pulling') + else _: + parser.error(f'{args.command!r} not yet implemented') +```