当前位置: 首页 > news >正文

Python范例总结

一、基础功能

  1、操作符
  • and 拥有更高优先级,会先行运算。
  • 优先级顺序为 NOT、AND、OR。
  2、列表
    1)列表拼接
l1 = [1,2,3]
l2 = [4,5,6]# 方法1
# l1 = l1 + l2# 方法2
# l1[len(l1):len(l1)] = l2# 方法3
l1.extend(l2)
print(l1)
   3、函数
    1)范例1
def greetPerson(*name):print('Hello', name)greetPerson('Runoob', 'Google')
##结果为Hello ('Runoob', 'Google')
    2)范例2

  加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

x = True
def printLine(text):print(text, ' Runoob')
printLine('Python')
##Python  Runoob
    3)范例3
def Foo(x):if (x==1):return 1else:return x+Foo(x-1)#n+n-1+1
print(Foo(100)) 
##结果是5050
   4、类
    1)私有字段/方法

  在Python中,属性和方法的访问权限只有两种:公开的和私有的。如果希望是私有的,在命名时可以用两个下划线作为开头。

  Python并没有从语法上严格保证私有属性或方法的私密性,它只是给私有属性和方法换了一个名字来“妨碍”对它们的访问,事实上如果你知道更换名字的规则仍然可以访问到它们。

  不建议将属性设置为私有的,因为这会导致子类无法访问。所以大多数Python程序员会遵循一种命名惯例就是让属性名以单下划线开头来表示属性是受保护的,本类之外的代码在访问这样的属性时应该要保持慎重。这种做法并不是语法上的规则,单下划线开头的属性和方法外界仍然是可以访问的,所以更多的时候它是一种暗示或隐喻

class JustCounter:__secretCount = 0  # 私有属性,前缀两个下划线publicCount = 0def count(self):self.__secretCount += 1  # 类内部调用私有属性self.publicCount += 1print(self.__secretCount)def __print1(self):  # 私有方法,前缀两个下划线print('This is a private method!')def print2(self):self.__print1()  # 类内部调用私有方法counter = JustCounter()print(counter.publicCount)# print counter.__secretCount  # 报错,实例不能访问私有属性
print(counter._JustCounter__secretCount) # 可以通过( 对象名._类名__私有属性名 )访问私有属性
counter.count()
# counter.__print1()  # 报错,实例不能访问私有方法
counter._JustCounter__print1()  # 可以通过( 对象名._类名__私有方法名 )访问私有方法
counter.print2()

二、进阶功能

  1、函数
    1)偏函数
import functools
def func(a1,a2):print(a1,a2)new_func = functools.partial(func, 666) ##666 传给第一个参数
new_func(999)
##结果 
666 999
    2)__开头的函数有很多

  当把面向对象中的所有__函数__实现时,对象做任何操作时,都会执行其中对应的方法

  举例1__add__

class Foo(object):def __init__(self, num):self.num =  numdef __add__(self, other):data = self.num + other.numreturn Foo(data)obj1 = Foo(1)
obj2 = Foo(2)v = obj1.num + obj2.numprint(v)
## 结果是3
    3)链chain

  将每个列表的函数(功能)拼接到一个大的列表中,依次执行

from itertools import chaindef f1(x):return x + 1func1_list = [f1,lambda x:x-1]def f2(x):return x + 10new_fun_list = chain([f2], func1_list)
for func in new_fun_list:print(func)

  列表也可以直接使用chain

from itertools import chainl1 = [11,22,33]
l2 = [44,55,66]new_list = chain(l1,l2)
for item in new_list:print(item)
     4)python命令行传参
  使用sys.argv传参

  sys模块是很常用的模块, 它封装了与python解释器相关的数据,例如sys.modules里面有已经加载了的所有模块信息,sys.path里面是PYTHONPATH的内容,而sys.argv则封装了传入的参数数据。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
gpus = sys.argv[1]
#gpus = [int(gpus.split(','))]
batch_size = sys.argv[2]
print(gpus, type(gpus))
print(batch_size, type(batch_size))

  执行python argv_test.py 1,0,2 10

  使用argparse传参
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import argparse
parser = argparse.ArgumentParser(description='manual to this script')
parser.add_argument('--gpus', type=str, default = None)
parser.add_argument('--batch-size', type=int, default=32)
args = parser.parse_args()
print(args.gpus, type(args.gpus))
print(args.batch_size, type(args.batch_size))

 执行:python argv_test.py --gpus=0,1,2 --batch-size=20

  2、类
    1)继承字典
class MyDict(dict):def __init__(self, *args, **kwargs):super(MyDict,self).__init__(*args, **kwargs)self['modify'] = Trueobj = MyDict()
print(obj)
    2)打开/关闭实现:with方法
class SQLHelper(object):def open(self):passdef fetch(self, sql):passdef close(self):pass
### 方法1
# obj = SQLHelper()
# obj.open()
# obj.fetch('selcet * from table1')
# obj.close()### 方法二
with SQLHelper() as obj: #自动调用类中的__enter__方法,obj就是__enter__返回值obj.fetch('selcet * from table1')# 当执行完毕后,自动调用类__exit__方法

  3、web框架的本质
    1)werkzeug
from werkzeug.wrappers import Request, Response@Request.application
def hello(request):return Response('Hello World!')if __name__ == '__main__':from werkzeug.serving import run_simplerun_simple('127.0.0.1', 40000, hello)
 
    2)wsgi

  WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。

  python标准库提供的独立WSGI服务器称为wsgiref。

from wsgiref.simple_server import make_serverdef RunServer(environ, start_response):start_response('200 OK', [('Content-Type', 'text/html')])return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]if __name__ == '__main__':httpd = make_server('', 8000, RunServer)print("Serving HTTP on port 8000...")httpd.serve_forever()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Nginx 限流实战教程和技巧
  • Apache Airflow如何使用
  • 如何在算家云搭建text-generation-webui(文本生成)
  • uniapp中<map>地图怎么实现点位聚合?
  • 【Qwen2-VL】通义多模态新作速读
  • 创建游戏暂停菜单
  • 力扣(leetcode)每日一题 LCR 187 破冰游戏(还是考的约瑟夫环)
  • UWA支持鸿蒙HarmonyOS NEXT
  • 【Spring】条件装配 @ConditionalOnClass @ConditionalOnBean
  • 【Midjourney中文版】智能绘画,高效便捷
  • python日志搜集分析系统
  • 系统架构笔记-3-信息系统基础知识
  • 关于 NLP 应用方向与深度训练的核心流程
  • 鸿蒙环境服务端签名直传文件到OSS
  • Redis安全
  • Centos6.8 使用rpm安装mysql5.7
  • CentOS7简单部署NFS
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HTTP中的ETag在移动客户端的应用
  • JavaScript HTML DOM
  • Python连接Oracle
  • rabbitmq延迟消息示例
  • Rancher如何对接Ceph-RBD块存储
  • Shadow DOM 内部构造及如何构建独立组件
  • ubuntu 下nginx安装 并支持https协议
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 力扣(LeetCode)21
  • Java数据解析之JSON
  • 第二十章:异步和文件I/O.(二十三)
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #stm32整理(一)flash读写
  • $.each()与$(selector).each()
  • $jQuery 重写Alert样式方法
  • (26)4.7 字符函数和字符串函数
  • (LLM) 很笨
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二)linux使用docker容器运行mysql
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二十三)Flask之高频面试点
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (六)c52学习之旅-独立按键
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .aanva
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net 6.0--通用帮助类--FileHelper
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net mvc 获取url中controller和action
  • .NET MVC之AOP
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态