AutoCV第四课:Python基础

目录

  • Python基础
    • 注意事项
    • 一、2023/4/4更新
    • 前言
    • 1.class
      • 1.1 基本介绍
      • 1.2 类的实例化
      • 1.3 魔法函数
    • 2.生成器
      • 2.1 定义
      • 2.2 生成器函数
      • 2.3 生成器表达式
    • 3.迭代器和可迭代对象
      • 3.1 迭代器
      • 3.2 可迭代对象
      • 3.3 区别和联系
    • 4.装饰器
      • 4.1 定义和语法
      • 4.2 类作为装饰器
        • 4.2.1 形式1
        • 4.2.2 形式2
      • 4.3 修饰类的成员函数
      • 4.4 常见装饰器
      • 4.5 基于装饰器的分配机制
    • 5.作业
      • 5.1 作业7
      • 5.2 作业8
    • 总结

Python基础

注意事项

一、2023/4/4更新

经杜老师纠正,生成器只是一个技术,不要强制说生成器可以节省内存空间(节省内存low b说法,很掉价🤣)。下面是杜老师的解释:

生成器,是一种《设计模式》的实践,它与内存无关。

即使不使用生成器,正常的程序开发也不会出现傻乎乎的产生全部数据再处理。

1.生成器,代表的是一种范式,一种规范的实践

2.生成器,还有send语法,可以实现协程的作用

可参考协程与异步IO

这里同时扩展了《设计模式》这件事,它引导着OOP(面向对象编程)的开发进程。指导了很多新时代语言,它是软件开发和计算机基础很重要的内容。设计模式(比如之前yolo.cu中的接口模式就是一种设计模式),相当于一种思想,指导如何写程序,设计结构。

不同的语言(python、c++、java)都只是不同的语言规范,实现相通的思想,那就是设计模式或者编程范式。

设计模式可参考设计模式|菜鸟教程

前言

手写AI推出的全新保姆级从零手写自动驾驶CV课程,链接。记录下个人学习笔记,仅供自己参考。
本次课程主要学习类及其基本概念以及生成器、迭代器和装饰器的相关知识
课程大纲可看下面的思维导图。

在这里插入图片描述

1.class

1.1 基本介绍

Python中的类(即class)是一种面向对象的编程工具,可以用来描述和创建对象的模板。类中定义了对象的属性和行为,可以实现封装、继承和多态等面向对象编程的特性。(from chatGPT)

类的语法结构如下:

class ClassName:'''类的帮助文档字符串'''# 类属性,是类的所有实例共有的属性class_attribute = valuedef __init__(self, arg1, arg2, ...):'''初始化方法,创建实例时被调用'''# 实例属性,每个类都有自己的属性self.instance_attribute = value# 调用父类初始化方法super().__init__(arg1, arg2, ...)def instance_method(self, arg1, arg2, ...):'''实例方法,操作实例的属性'''pass@classmethoddef class_method(cls, arg1, arg2, ...):'''类方法,操作类的属性'''pass@staticmethoddef static_method(arg1, arg2, ...):'''静态方法,不涉及实例和类,一般用来实现工具函数'''pass

其中,

  • 类属性是类的所有实例共有的属性,通过类名可以直接访问(比如Animal.life)
  • 实例属性是每个实例有自己的属性,通过self关键字访问(比如dog.name)
  • 实例方法是操作实例的方法,必须有self作为第一个参数(比如dog.eat())
  • 类方法是操作类的方法,必须有cls作为第一个参数,可以通过类名或实例名调用
  • 静态方法是不涉及实例和类的方法,可以通过类名或实例名调用

类的继承通过在类定义时在括号内指定父类,如:

class SubClass(ParentClass):'''子类定义'''

子类可以继承父类的属性和方法,并可以在子类中添加新的属性和方法,实现代码的复用和扩展。

1.2 类的实例化

实例化是指,根据类创建一个实际的对象。类是抽象的概念,而对象则是具体的实现。比如说类Animal,动物类这是一个抽象的概念,自然界有那么多动物,具体是那种动物呢?可以通过将其实例化赋予抽象类Animal特点,让它变成具体的实现,比如dog,它就是抽象类Animal的一种实例对象。

在Python中,要实例化一个类,需要使用类名加上一对括号,如Animal(),这将创建类的一个实例。实例化类时,会调用类的初始化函数__init__(),并返回一个新的实例。实例化类的一个简单示例如下:

class Animal():def __init__(self, name):self.name = namedef eat(self):print(f"{self.name}正在吃东西.")dog = Animal("旺财")  # 类的实例化 
print(dog.name)		 # 输出: 旺财
dog.eat()			 # 输出:旺财正在吃东西.

在上述示例中,我们定义了一个Animal类,并在其初始化函数中传入一个参数name,在实例方法eat中使用了传入的参数name。然后,我们使用Animal实例化一个对象dog,并传入一个参数"旺财"

实例化类时,如果类没有定义__init__()构造函数,则会使用默认构造函数。

拓展之self参数:在Python中,self是一个指向类实例本身的引用。类中的实例方法需要访问该实例,因此在定义实例方法时必须将self作为第一个参数,以便在内部使用它。self类似于C++中的this指针,self实际上是一个约定俗成的参数名称,它可以被替换为其它名称。

1.3 魔法函数

在Python中,有一些特殊的函数被称为魔法函数(magic method),也叫特殊方法。这些方法以双下划线__开头和结尾,在类中重写这些方法可以实现一些特殊的行为,比如操作符重载、自定义对象转换等。(from chatGPT)

下面是类中几个常用的魔法方法:

  • __init__(self, ...):构造函数(也叫初始化函数),在创建对象时自动调用,用于初始化对象的属性
  • __call__(self, ...):使对象可调用,当对象被当作函数如obj(...)调用时,该方法会被触发
  • __getitem__(self, key):获取特定索引值的元素,通过obj[key]调用
  • __iter__(self):该方法被调用时返回了一个实现了__next__()方法的迭代器对象
    • 简单解释下迭代器是一个可以被迭代的对象,它能够在每次调用__next__()方法时返回其下一个值,直到所有值都被遍历完毕。
    • 明确下列表、元组、字符串都是可迭代对象,但不是迭代器,它们本身不含有__next__方法,所以无法通过next()函数来进行迭代,但是它们可以通过内置函数iter()转换为迭代器
    • 如果一个类实现了魔法方法__iter__()__next__(),那么它就可以被视为一个迭代器
  • __next__(self):返回当前迭代器的下一个值,如果没有下一个值,则会抛出StopIteration异常

简单的示例代码如下所示:

# __init__魔法方法
class Person:def __init__(self, name) -> None:self.name  = nameperson = Person("Tom")
print(person.name) # 输出:Tom# __call__魔法方法
class Add:def __init__(self, num) -> None:self.num = numdef __call__(self, x):return self.num + xadd = Add(5)
print(add(3)) # 输出:8# __getitem__魔法方法
class MyList:def __init__(self, lst):self.lst = lstdef __getitem__(self, index):return self.lst[index]mylist = MyList([1, 2, 3])
print(mylist[1]) # 输出:2# __iter__和__next__魔法方法
class Reverse:def __init__(self, data) -> None:self.data = dataself.index = len(data)def __iter__(self):return selfdef __next__(self):if self.index == 0:raise StopIterationself.index = self.index - 1return self.data[self.index]rev = Reverse("hello")
for char in rev:print(char) # 输出:o l l e h

2.生成器

2.1 定义

Python中,生成器是一种特殊的迭代器(定义,本质上是迭代器),它可以通过生成器函数或生成器表达式来创建(创建方法)。生成器可以用于生成协程,通过send()方法进行协程间的通信,实现异步编程和协作式多任务处理(用途)。

2.2 生成器函数

生成器函数是一种特殊的函数,它使用yield语句来生成一个序列。当生成器函数被调用时,它返回一个生成器对象,可以通过该对象来迭代生成器中的元素。生成器可以用做懒加载,即只有在使用的生成器元素时才会生成该元素,而不是提前生成全部元素。

下面是一个简单的示例代码,演示如何使用生成器函数来创建一个生成器:

# 生成器函数
def my_generator(max):current = 0while current < max:yield currentcurrent += 1# 创建生成器
gen = my_generator(5)
for i in gen:print(i) # 输出:0 1 2 3 4

在这个示例代码中,首先调用my_generator函数来创建一个生成器对象gen。然后,我们使用for循环来迭代gen中的元素,并输出每个元素的值。在迭代过程中,Python会自动调用生成器对象的__next__方法来获取下一个元素的值,直到生成器中的所有元素都被迭代完毕。

值得注意的是:当执行到yield语句时,函数会暂停执行,并返回当前的值,同时将函数的状态保存下来。当下一次调用生成器对象的__next__方法,函数会从上一次暂停的位置继续执行,直到遇到下一个yield语句或函数结束。

2.3 生成器表达式

生成器表达式类似于列表推导式,但使用圆括号而不是方括号来表示。与列表推导式不同的是,生成器表达式并不立即生成一个列表,而是生成一个生成器对象。

下面是一个简单的示例代码,演示如何使用生成器表达式来创建一个生成器:

gen = (x for x in range(5))
for i in gen:print(i) # 输出:0 1 2 3 4

和生成器函数一样,我们也可以使用生成器表达式来实现更复杂的逻辑和条件判断,例如,筛选一个列表中的偶数元素,代码如下:

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
gen = (x for x in my_list if x % 2 == 0)
for i in gen:print(i) # 输出:2 4 6 8 10

3.迭代器和可迭代对象

3.1 迭代器

在Python中,迭代器是一种可以遍历容器中元素的对象,它可以逐个返回容器中的元素,并在遍历过程中记录当前位置。迭代器可以用于处理大量数据或无法一次加载到内存中的数据集(Dataset)。

在Python中,迭代器必须实现两个方法:__iter____next__。其中__iter__方法返回迭代器对象本身,而__next__方法返回容器中的下一个元素,如果容器中没有更多元素,则抛出StopIteration异常。

下面是一个迭代器的示例:

class MyIterator:def __init__(self, data):self.index = 0self.data = datadef __iter__(self):return selfdef __next__(self):if self.index >= len(self.data):raise StopIterationresult = self.data[self.index]self.index += 1return resultmy_list = [1, 2, 3, 4]
my_iterator = MyIterator(my_list)for item in my_iterator:print(item) # 输出:1 2 3 4

在上面的代码中,MyIterator类实现了__iter____next__方法,使得该类的实例my_iterator成为一个迭代器对象。在for循环中,我们使用my_iterator来进行迭代,最终输出列表中的元素。注意,在迭代器中,我们呢需要手动实现__next__方法,每次迭代都需要更新迭代器的状态。

3.2 可迭代对象

在Python中,可迭代对象是指实现了__iter__()方法的对象,例如列表、元组、字符串等,它们可以被for循环遍历。

下面是可迭代对象的一个简单示例:

class MyIterable:def __init__(self, data):self.data = datadef __iter__(self):return iter(self.data)my_list = [1, 2, 3, 4]
my_iterable = MyIterable(my_list)for item in my_iterable:print(item) # 输出:1 2 3 4

上面的代码中,MyIterable类实现了__iter__方法,该方法通过调用Python内置函数iter()返回了一个迭代器对象。在MyIterable类的实例化中,我们将一个列表传递给了MyIterable类,使得该类的实例my_iterable成为一个可迭代对象。在for循环中,我们使用my_iterable来进行迭代,最终输出列表中的元素。

3.3 区别和联系

区别:可迭代对象只是一个具有__iter__()方法的对象,而迭代器则是实现了__iter__()方法和__next__()方法的对象。可迭代对象可以被用于for循环中,但是如果我们需要使用next()函数来逐一获取其元素,那么就需要将其转换成迭代器。

联系:可迭代对象可以通过实现__iter__()方法来返回一个迭代器,迭代器可以用来遍历可迭代对象。另外,可迭代对象和迭代器都可以通过for循环来遍历元素。

下面是一个简单的示例,演示了如何将可迭代对象转换成迭代器并调用next()方法进行遍历:

my_list = [1, 2, 3, 4, 5]
# 将列表对象转换为一个迭代对象
my_iter = iter(my_list)while True:try:# 获取下一个元素的值value = next(my_iter)print(value) # 输出:1 2 3 4 5except StopIteration:break

4.装饰器

4.1 定义和语法

Python的装饰器本质上是一个函数,它接受一个函数对象作为参数,并返回一个修改后的函数对象(参数和返回值均为函数对象)。装饰器通常使用@decorator的语法糖来使用,它可以将装饰器应用于函数或类的定义之前,从而实现对其功能的增强或修改。(from chatGPT)

下面是一个简单的示例,演示了如何使用装饰器来打印函数的运行时间:

import timedef time_it(func):def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs)end_time = time.time()print(f"Function {func.__name__} took {(end_time - start_time) * 1000 :.3f} ms.")return resultreturn wrapper@time_it # 等价于 my_func = time_it(my_func)
def my_func():time.sleep(1)my_func()

在上述代码中,我们定义了一个名为time_it装饰器函数,它接受一个函数对象作为参数,并返回一个修改后的函数对象。接着,我们使用@time_it的语法糖将装饰器应用于函数my_func的定义之前,这意味着函数my_func将被传递给装饰器函数time_it,并被修改为一个新的函数对象。当调用函数my_func时,实际上调用的是被修改后的函数对象wrapper,它会记录函数运行时间,并输出运行时间信息。

装饰器的语法结构如下:

@表达式def 被修饰的函数

其中,表达式需要返回一个函数对象,这个函数对象就是用来修饰函数的。以上面的代码为例,这里的表达式就是time_it,被修饰的函数就是my_func。上述装饰器也可以写成函数名 = 表达式(函数名)的形式即my_func = time_it(my_func),可实现相同的功能。

4.2 类作为装饰器

上面实现了函数作为装饰器的用法,现在我们来看看类作为装饰器的几种形式。

4.2.1 形式1

使用class的__init__作为装饰入口,传递my_func;使用class的__call__作为调用入口

示例代码如下:

import timeclass TimeIt():def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):start_time = time.time()result = self.func(*args, **kwargs)end_time = time.time()print(f"Function {self.func.__name__} took {(end_time - start_time) * 1000 :.3f} ms.")return result@TimeIt # 相当于 my_func = TimeIt(my_func) 进行实例化
def my_func():time.sleep(1)my_func()   # 相当于调用实例化对象的__call__魔术方法

这里使用类来实现装饰器,__init__方法接受被装饰函数,__call__方法作为装饰器的入口,接受被装饰函数的参数,计算其运行时间并打印。@TimeIt相当于执行了my_func = TimeIt(my_func),将被装饰函数传递给装饰器的__init__方法。

4.2.2 形式2

使用class的__call__作为装饰入口,传递my_func,返回wrapper;在warpper中实现统计耗时

import timeclass TimeIt():def __init__(self, name):self.name = namedef __call__(self, func):def wrapper():start_time = time.time()result = func()end_time = time.time()print(f"Function {self.name} took {(end_time - start_time) * 1000 :.3f} ms.")return resultreturn wrapper@TimeIt("test") # 相当于 my_func = TimeIt("test")(my_func)
def my_func():time.sleep(1)my_func()

这里实现是将被装饰的函数my_func作为参数传递给了__call__方法,因此,在执行@TimeIt("test")时,实际上是创建了一个TimeIt对象,并将"test"作为参数传递给了该对象的__init__初始化方法,然后将my_func作为参数传递给了该对象的__call__方法,最终执行了wrapper函数,并返回了其返回值。

4.3 修饰类的成员函数

下面的示例演示了装饰器修饰类的成员函数:

import timedef time_it(func):def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs)end_time = time.time()print(f"Function {func.__name__} took {(end_time - start_time) * 1000 :.3f} ms.")return resultreturn wrapperclass Tool():@time_it # 相当于my_func = time_it(my_func)def my_func():time.sleep(1)Tool.my_func()

上述代码中,@time_it是一个装饰器,用来修饰Tool类的成员函数my_func。通过在my_func前加上@time_it,实现了对my_func的装饰,使得my_func在被调用时,会先调用time_it函数统计函数运行时间。调用Tool.my_func()时,实际上是调用了wrapper函数,并将其结果返回。

4.4 常见装饰器

在Python中有一些常见的内置装饰器,如@classmethod@staticmethod@property,下面我们分别介绍下:(from chatGPT)

  • @classmethod装饰器用于将一个函数定义为类方法,类方法可以在不创建实例的情况下被类本身调用,常用于在类级别上操作或返回类的某些属性或方法。使用@classmethod修饰的函数的第一个参数必须是cls,代表调用该方法的类本身。
  • @staticmethod装饰器用于将一个函数定义为静态方法,静态方法和类方法类似,但是在静态方法中不需要传递类或实例参数,使用@staticmethod修饰的函数没有特殊的参数要求,因为它们与类或实例无关,所以可以在不实例化类的情况下直接调用。
  • @property装饰器用于将一个函数定义为属性,使得该函数可以像类属性一样被访问,但是每次访问该属性时都会动态计算。是使用@property修饰的函数必须有一个返回值,该返回值就是该属性的值。

下面是一个简单的示例,用来说明这几种内置装饰器的功能:

class Myclass:def __init__(self, value):self._value = value@classmethoddef from_string(cls, value_string):value = int(value_string)return cls(value)  # 等价于 Myclass(value)@staticmethoddef say_hello():print("Hello!")@propertydef value(self):return self._value@value.setterdef value(self, new_value):self._value = new_valueinstance = Myclass.from_string("123")
Myclass.say_hello()		# 输出:Hello!
instance.say_hello()	# 输出:Hello!
print(instance.value)	# 输出:123
instance.value = 456
print(instance.value)	# 输出:456

在这个示例中,我们首先使用类方法from_string来创建一个MyClass实例,然后调用静态方法say_hello,最后输出value属性的值,并通过属性赋值方法来修改它的值。对于该示例主要有以下几点说明:

  • 这个示例定义了一个名为MyClass的类,它有一个构造函数__init__,一个类方法from_string,一个静态方法sat_hello和一个属性value
  • from_string方法是一个类方法,它用于根据传入的字符串参数创建一个MyClass的实例。在这个方法内部,我们首先将字符串转换为整数类型,然后使用cls参数来创建一个新的类实例。
  • say_hello方法是一个静态方法,它不需要访问任何实例属性或者类属性,因此它可以作为类方法而不是实例方法来定义。我们可以在不实例化MyClass的情况下,直接调用这个静态方法。
  • value是一个实例属性,我们可以通过@property装饰器将其变成只读属性,即只能通过instance.value来读取,而不能通过instance.value = new_value来修改。如果我们希望value属性是可写的,那么可以再定义一个带有@value.setter装饰器的方法,用于处理新值的赋值操作。

4.5 基于装饰器的分配机制

基于装饰器的分配机制,是指在Python中,装饰器可以用于为类或函数动态地添加额外地属性或方法。通过装饰器,我们可以在不修改原始类或函数定义的情况下,为它们添加新的功能。在Python中,这种机制被称为基于装饰器的分配机制(Decorator-Based Dispatching)

例如,我们可以使用装饰器为一个函数添加日志功能,如下所示:

def log(func):def wrapper(*args, **kwargs):print("Calling function:", func.__name__)resutlt = func(*args, **kwargs)print("Function result:", resutlt)return resutltreturn wrapper@log
def add(a, b):return a + badd(1, 2) # 输出:Calling function: add  Function result: 3

在这个例子中,log装饰接收一个函数作为参数,返回一个新的函数wrapper,当我们调用add函数时,实际上是调用了wrapper函数,从而实现了日志功能的添加。

通过装饰器,我们可以轻松地为类和函数添加新的功能,而不需要修改它们地定义。这样,我们可以保持代码的简洁性和可读性,同时又能够满足不同的需求。

5.作业

5.1 作业7

内容:自定义类Fib(count),通过迭代,每次吐出一个斐波拉契数列数列值,最多count次

可以利用迭代器,在类Fib重写__iter____next__方法,以实现迭代输出斐波那契数列的功能,示例代码如下:

class Fib:def __init__(self, count):self.count = countself.current = 0self.next = 1self.index = 0# 返回迭代器对象def __iter__(self):return self# 获取下一个迭代器元素def __next__(self):if self.index >= self.count:raise StopIterationresult = self.currentself.current, self.next = self.next, self.current + self.nextself.index += 1return resultfor i, number in enumerate(Fib(10)):print(f"第 {i+1:<2} 个数是 {number:<2}")  # :<2表示输出宽度为2,左对齐

输出结果如下:

在这里插入图片描述

拓展之enumerate

enumerate是Python中的一个内置函数,用于枚举一个可迭代对象的元素并返回一个由元素下标和元素本身组成的二元组。其语法格式如下:

enumerate(iterable, start=0)

其中,iterable表示要枚举的可迭代对象,start表示起始下标,默认为0。返回的是一个迭代器对象。enumerate函数在循环中非常有用,可以同时获得下标和元素的值。

下面是一个简单示例:

fruits = ['apple', 'banana', 'orange']
for i, fruit in enumerate(fruits):print(i, fruit)	# 输出:0 apple 1 banana 2 orange

5.2 作业8

内容:自定义类装饰器,修饰作业7的类,并修改这个函数的返回值+5

示例代码如下:

class Hook:def __init__(self, name):self.name = namedef __call__(self, func):def warpper(*args, **kwargs):result = func(*args, **kwargs)return result + 5return warpperclass Fib:def __init__(self, count):self.count = countself.current = 0self.next = 1self.index = 0# 返回迭代器对象def __iter__(self):return self# 获取下一个迭代器元素@Hook("FibTimer")  # __next__ = Hook(__next__)def __next__(self):if self.index >= self.count:raise StopIterationresult = self.currentself.current, self.next = self.next, self.current + self.nextself.index += 1return resultfor i, number in enumerate(Fib(10)):print(f"第 {i+1:<2} 个数是 {number:<2}")  # :<2表示输出宽度为2,左对齐

输出结果如下:

在这里插入图片描述

总结

本次课程学习的内容挺多的,首先学习了类的基本概念和魔法函数,其次学习了Python中的三大神器,分别是生成器、迭代器和装饰器,了解了构建生成器的两种方式:生成器函数和生成器表达式。了解了迭代器在类中的使用(通过__iter____next__),同时还了解了装饰器的相关语法(包括函数作为装饰器和类作为装饰器)以及python中常见的内置装饰器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70918.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么天蝎座出互联网大佬,我来告诉你原因!

互联网时代的统治者&#xff0c;天蝎座&#xff1b;说起天蝎座&#xff0c;相信大家都觉得很惊呀&#xff0c;为什么大部分互联网大佬都是天蝎座呢&#xff1f;因为天蝎座的管理力、判断力、忍耐力、责任感都是非常优秀的&#xff1b;他们斗志顽强&#xff0c;一旦决定要做到的…

果然天蝎座的人积分落户最容易...

欢迎关注天善智能&#xff0c;我们是专注于商业智能BI&#xff0c;人工智能AI&#xff0c;大数据分析与挖掘领域的垂直社区&#xff0c;学习&#xff0c;问答、求职一站式搞定&#xff01; 对商业智能BI、大数据分析挖掘、机器学习&#xff0c;python&#xff0c;R等数据领域感…

中国电商现状 以及未来发展趋势

从20世纪90年代中国电子商务起步期开始&#xff0c;直到今日我国电商已经发展了20多年。经历了从具体的技术应用发展到相关产业的形成&#xff0c;并通过创新与协同发展融入国民经济的各个组成部分的发展历程。那么我国电商现状是怎么样的&#xff1f;未来的发展趋势又如何呢&a…

社交电商与传统电商的优势对比

1.获客方式的不同 传统电商以“货”为中心&#xff0c;以流量为王&#xff0c;依靠流量带动更多销售。 社交电商以“人”为中心&#xff0c;以社交分享为王。它是由社会关系形成的电商形态。它不以产品搜索和展示为销售模式&#xff0c;而是通过社交和用户分享形成口碑效应&a…

影响电商发展的重要因素及电商未来的发展可能

易观分析&#xff1a;自从互联网传入中国以后&#xff0c;特别是2000年以后&#xff0c;一直保持着非常快的演变速度&#xff0c;而以互联网为基础的电商则更是发展成了中国互联网的代表性行业。中国电商的发展不仅在初期有着非常高的增速&#xff0c;有着多样化的演进路线&…

跨境电商的行业现状与发展趋势分析

随着互联网的不断发展&#xff0c;跨境电商作为一种全新的商业模式已经逐渐崭露头角。跨境电商的出现&#xff0c;让越来越多的商家看到了扩大市场的机会&#xff0c;也为消费者提供了更加便利、更加优质的购物体验。本文将从跨境电商的定义、行业现状、发展趋势等方面进行探讨…

文心一言测试

介绍 测试百度文心一言回答问题的能力。 笔者做了上百次测试&#xff0c;结果大同小异&#xff0c;本文选取几个经典案例 案例1 你是谁&#xff0c;你的训练数据来源是&#xff1f;你的数据实时更新吗&#xff1f;案例2 案例3 写一个脚本&#xff0c;unity3d控制刚体小球&am…

“文心一言”API调用服务开放邀测

3月16日&#xff0c;百度于北京总部召开新闻发布会&#xff0c;主题围绕新一代大语言模型、生成式AI产品文心一言。大会现场透露&#xff0c;百度智能云即将面向企业客户开放文心一言API接口调用服务&#xff0c;现已正式开放预约。 百度创始人、董事长兼首席执行官李彦宏预告称…

文心一言vsChatGpt-学习Python编程能力

目录 前言 功能测试 1.你会接入广告吗&#xff1f; 2.“电车难题” 3.严刑逼供 4.死后还会有余生吗? 5.我们的宇宙真实吗? 6.我们有自由意志吗? 7.造物主存在吗? 编程能力 1.for循环 2.用python搭建一个博客网站 3.用python写一个鸡兔同笼的代码 4.用python可以做…

2021年重庆科技学院线上复试流程(其他学校复试也可以借鉴的)包含一些专业课相关问题

2020年重庆科技学院智能技术与工程学院研究生复试调剂流程: 其他院校的线上复试也可以借鉴的!! 保姆级别教程,整理不易,请投币!谢谢! 有什么问题可以尽管问 其实本来不想卖资料的 但是问的人有点多 一个个回已经回不过来了 就编了一份有价值的资料然后剔除掉那些不是真的…

考研【复试技巧】如果复试时太紧张,遇到不会的问题只能凉了吗?这些技巧收下!

最近大家在紧张准备复试的时候&#xff0c;一定有想过“万一导师问了我不会的问题怎么办&#xff1f;就像初试遇到不会的题目一样......” 复试可能也会遇到不会的问题&#xff0c;只是复试时的场面更直接。面对导师你来不及思考&#xff0c;来不及放下回头再做。 那么&#xf…

计算机网络考研/考博复试常见问题

目录 第一章、计算机网络体系结构 第二章、物理层 第三章、数据链路层 第四章、网络层 第五章、传输层 第六章、应用层 第一章、计算机网络体系结构 快速唤起记忆知识框架 1.计算机网络的主要功能&#xff1f; 1、硬件资源共享。 可以在全网范围内提供对处理资源、存储资…

复试常考问题考前突击

目录 计算机网络 1.OSI参考模型 2.TCP/IP模型 3.IP协议 4.TCP和UDP&#xff08;这两个协议的比较&#xff0c;TCP三次握手&#xff09; 5.tcp三次握手的过程 6.TCP四次挥手&#xff08;为什么比握手多一次呢&#xff09; 7.应用层常用协议 8.DNS和DHCP 9.什么是对称密…

易班显示不能连接到服务器检查网络,学校安排大规模“在线考试”常见的问题...

一、不要像线下考试一样安排教室组织学生线上考试&#xff01; 1.学校如果没有条件提供机房的话&#xff0c;不要组织学生像线下考试一样集中在教室里参加考试。 2.大量学生集中在狭小空间(教室里)&#xff0c;如果不提供wifi&#xff0c;依靠学生自己的4G\3G来上网考试&#x…

涉及top名校对IB课程的分数要求

在北美、欧洲&#xff0c;有许多著名的大学乐于接收IB学生&#xff0c;有一些大学还为优秀IB毕业生提供奖励学分、越级的鼓励入学政策。全球有分布在近百个国家的一千余所大学与国际文凭组织(IBO)有稳定的协约关系&#xff0c;确保这些大学承认IB文凭。 什么是IB课程?IB课程项…

考研复试中可能会被问到的40个问题

考研复试中可能会被问到的40个问题 复试面试的形式是怎样? 专业课一般逐个面试&#xff1a;现场会有一定的评分标准&#xff0c;有些导师手中都会有评分表。大家抽签答题或者从题库中抽取题目&#xff0c;导师也会随机提问&#xff0c;包括让考生自我介绍、为什么报这个学校/…

达观医疗器械知识图谱-心血管器械企业加速创新的“黑科技”

近年来&#xff0c;在心血管和结构性心脏病领域&#xff0c;高新医疗器械的临床应用显得越来越迫切&#xff0c;然而&#xff0c;现阶段国内相关心血管医疗器械的研究国内传统医疗器械企业在实际产品创新和功能优化的过程中。 针对于现有专业领域知识和经验的管理问题还处于半封…

医疗CRM的应用价值有哪些?提升医院竞争力

随着医疗改革深入开展&#xff0c;各大医疗机构分别将患者诊疗、满意度调查以及高效的客户服务纳入医院管理重点&#xff0c;为了更好的服务患者&#xff0c;拓展市场渠道&#xff0c;有效统计分析医院患者信息&#xff0c;完善诊疗流程及服务管理&#xff0c;规范院前、院中、…

医疗器械从业者网站

医疗器械从业者网站 - 知乎 目录 一、政策法规类 1. 中华人民共和国中央人民政府-行政法规库 2. 国家药品监督管理局——医疗器械板块 3. 国家药品监督管理局医疗器械技术审评中心 4. 国家药品监督管理局食品药品审核查验中心 5. 中国生物技术发展中心官网 6. 中华人民…

2022-2028年中国肛肠医疗器械(吻合器与套扎器)行业市场调研报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国肛肠医疗器械(吻合器与套扎器)行业市场行业相关概述、中国肛肠医疗器械(吻合器与套扎器)行…