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

OpenCV入门1:Python基础编程

目录

环境配置

Python基础语法

import 与 from...import

If ... Else 语句

While 循环

For 循环

集合数据类型

列表

函数

类和对象


环境配置

详情请参考:Pycharm环境配置完整教程

Python基础语法

import 与 from...import

  • 在 python 用 import 或者 from...import 来导入相应的模块。
  • 将整个模块(somemodule)导入,格式为: import somemodule
  • 从某个模块中导入某个函数,格式为: from somemodule import somefunction
  • 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
  • 将某个模块中的全部函数导入,格式为: from somemodule import *

If ... Else 语句

else 示例
a = 200
b = 33
if b > a:print("b is greater than a")
elif a == b:print("a and b are equal")
else:print("a is greater than b")

简写 If ... Else

a = 2
b = 330
print("A") if a > b else print("B")

While 循环

break 语句
i = 1
while i < 6:print(i)if i == 3:break
i += 1
如果使用 break 语句,即使 while 条件为真,我们也可以停止循环。
continue 语句
i = 0
while i < 6:i += 1if i == 3:continueprint(i)

如果使用 continue 语句,我们可以停止当前的迭代,并继续下一个。

For 循

range() 函数

for x in range(6):print(x)

嵌套循环

adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]for x in adj:for y in fruits:print(x, y)

pass 语句

for x in [0, 1, 2]:pass

break 语句

fruits = ["apple", "banana", "cherry"]
for x in fruits:print(x)if x == "banana"break

continue 语句

fruits = ["apple", "banana", "cherry"]
for x in fruits:print(x)if x == "banana"continueprint(x)

集合数据类型

Python 编程语言中有四种集合数据类型:

  • 列表(List) 是一种有序和可更改的集合。允许重复的成员。
  • 元组(Tuple) 是一种有序且不可更改的集合。允许重复的成员。
  • 集合(Set) 是一个无序和无索引的集合。没有重复的成员。
  • 词典(Dictionary)是一个无序,可变和有索引的集合。无重复的成员。

列表

列表是一个有序且可更改的集合。在 Python 中,列表用方括号编写。

thislist = ["apple", "banana", "cherry"]
print(thislist)
print(len(thislist))

索引

列表被截取后返回一个包含所需元素的新列表。列表截取的语法格式如下:

变量[头下标:尾下标]     ,   索引值以 0 为开始值,-1 为从末尾的开始位置。

thislist = ["apple", "banana", "cherry", "kiwi", "melon", "mango"]
print(thislist[-1])
print(thislist[1])
print(thislist[2:])
print(thislist[:4])
print(thislist[-4:-1])
for x in thislist:print(x)
if "apple" inthislist:print("Yes, 'apple' is in the fruits list")
thislist.append("orange")
print(thislist)
thislist.remove("banana")
thislist.pop()

函数

调用函数

如需调用函数,请使用函数名称后跟括号:
def my_function():print("Hello World!")my_function()

参数

信息可以作为参数传递给函数。

参数在函数名后的括号内指定。您可以根据需要添加任意数量的参数,只需用逗号分隔即可。

下面的例子有一个带参数(fname)的函数。当调用此函数时,我们传递一个名字,在函数内部使用它来打印全名:

def my_function(fname):print(fname + " Refsnes")my_function("Emil")
my_function("Tobias")
my_function("Linus")

返回值

如需使函数返回值,请使用 return 语句:
def my_function(x):return 5 * xprint(my_function(3))
print(my_function(5))

pass 语句

函数定义不能为空,但是如果您出于某种原因写了无内容的函数定义,请使用 pass 语句来避免错误。
def my_function():pass

lambda 函数

语法:lambda arguments: expression

def my_function(n):return lambda a:a*n

类和对象

Python 是一种面向对象的编程语言。Python 中的几乎所有东西都是对象,拥有属性和方法。类(Class)类似对象构造函数,或者是用于创建对象的"蓝图"。

创建类

如需创建类,使用 class 关键字,使用名为 x 的属性,创建一个名为 MyClass 的类:

class Myclass:x = 5

创建对象

创建一个名为 p1 的对象,并打印 x 的值:
p = Myclass()
print(p.x)

__init__()函数

上面的例子是最简单形式的类和对象,在实际应用程序中并不真正有用。要理解类的含义,我们必须先了解内置的__init__()函数。所有类都有一个名为 __init__()的函数,它始终在启动类时执行。使用__init__()函数,将值赋给对象属性,或者在创建对象时需要执行的其他操作:创建名为 Person 的类,使用__init__()函数为 name 和 age 赋值:

class Person:def   init (self, name, age):self.name = nameself.age = agep1 = Person("John", 36)
print(p1.name)
print(p1.age)

对象方法

对象也可以包含方法。对象中的方法是属于该对象的函数。让我们在Person 类中创建方法:插入一个打印问候语的函数,并在 p1 对象上执行它:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef my_function(self):print(f"Hello my name is {self.name}")p = Person("John", 36)
p.my_function()

self 参数

self 参数是对类的当前实例的引用,用于访问属于该类的变量。它不必被命名为 self,你可以随意调用它,但它必须是类中任意函数的首个参数。

if  __name__ == '__main__':

它的意思是:当该模块被直接执行时,该条件成立,执行其下的代码;当该模块被导入时,该条件不成立,其下的代码不会被执行。

# test.py
def myfunc():print(f"Hello World!")if __name__ == '__main__':myfunc()

当运行 test.py 文件时,可以执行myfunc()函数;当使用import test 导入该模块时,myfunc()函数不会执行(除非手动调用,即from test import myfunc)

参考文档:

Python3 教程 | 菜鸟教程(runoob.com)

OpenCV中文官方文档

http://www.lryc.cn/news/345329.html

相关文章:

  • C++ Builder XE EnumWindowsProc遍历所有窗口的名称
  • Qt QInputDialog详解
  • 最新盘点!2024年20大好用的项目管理软件(后续持续更新)
  • Linux:配置客户端默认autofs服务
  • Kotlin版本的Gradle全局配置init.gradle.kts及参考文档
  • react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)
  • C++学习第二十七课:C++ 输入输出流详解:从基础到高级应用
  • 【Unity AR开发系列】介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用
  • Nginx - 配置文件结构(一)
  • 暗区突围进不去/游戏无法启动/掉帧卡顿/报错的解决方法
  • 基于FPGA的视频矩阵 视频拼接 无缝切换解决方案
  • LeetCode 513.找树左下角的值
  • redis分片java实践、redis哨兵机制实现、redis集群搭建
  • 2024年四千价位段最具统治力的投影仪,坚果N1S 4K: 4K+三色激光=下一代4K
  • MySQL8.3升级踩坑记录
  • 你写的每条SQL都是全表扫描吗
  • 每日两题 / 24. 两两交换链表中的节点 25. K 个一组翻转链表(LeetCode热题100)
  • 【Linux】模拟实现bash(简易版)
  • C++ | Leetcode C++题解之第67题二进制求和
  • 如何确保UDP文件传输工具有最低稳定的传输速度?
  • 力扣爆刷第133天之动态规划收尾(距离编辑与回文子串)
  • List集合中对asList的使用
  • 软件测试所有测试方法
  • linux 下 /usr/local的作用
  • 【web网页制作】html+css旅游家乡河南开封主题网页制作(4页面)【附源码】
  • MySQL用命令行导出数据库
  • uniapp video 层级覆盖
  • SparkSQL概述
  • docker 和 docker-compose
  • 微信小程序支付(完整版)-ThinkPHP/Uniapp