python中函数参数列表中使用的 冒号是干啥用的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中函数参数列表中使用的 冒号是干啥用的相关的知识,希望对你有一定的参考价值。

函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型。函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型。
def twoSum(num1: int, num2: int=100) -> int:
sum = num1 + num2 return sum

if __name__ == "__main__": print(twoSum.__annotations__) print(twoSum(1,2)) print(twoSum(1)) print(twoSum('I love ','Arsenal')) #print(twoSum('Arsenal'))
参考技术A type hint,大概算是类型标记?
主要是为了静态分析和重构用
然而 Python 还是动态类型的,同时第三方库的运行时类型检查是由开发者实现的
总结一下就是并没有什么卵用本回答被提问者采纳
参考技术B 字典(dict)的每个键值对()用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号()中 ,格式如下所示:
d = key1 : value1, key2 : value2

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
列表(list)或序列(sequence)中的冒号与matlab用法类似,如
>>a = range(3)
>>a==a[0:3]
>>True
参考技术C def add(x:int,y:bool): # :int 并没有卵用,python是动态类型,这里写成 y:bool 然后y=2并不触发异常
return x+y

print(add(1,y=2)) # 3

sem_init(...): value 参数是干啥用的?

【中文标题】sem_init(...): value 参数是干啥用的?【英文标题】:sem_init(…): What is the value parameter for?sem_init(...): value 参数是干什么用的? 【发布时间】:2012-02-20 23:14:41 【问题描述】:

在一个类中,我们不得不使用信号量来完成线程工作。 sem_init 的原型(和头文件)如下:

int sem_init(sem_t *sem, int pshared, unsigned int value);

但我不明白 value 变量的用途。根据 opengroup.org:

value 是设置信号量的初始值

“value is a value...”这有什么帮助,它有什么用?

【问题讨论】:

【参考方案1】:

Semaphore 值表示可在线程之间共享的公共资源的数量。如果该值大于 0,则调用 sem_wait 的线程无需等待。它只是将值减 1 并继续访问公共资源。 sem_post 会将资源添加回池中。所以它将值加 1。如果值为 0,那么我们将等到有人完成 sem_post。

【讨论】:

【参考方案2】:

sem_init() 初始化一个指向信号量(第一个参数),用值(最后一个参数),最后我相信这实际上是你问的,int pshared 你可以把它想象成一个标志。如果 pshared == 1 则可以分叉信号量。

编辑:信号量具有 int 值,因为您将使用诸如 sem_wait(sem_t* sem) 之类的函数来递减指向信号量的值。如果是负数,则屏蔽。

【讨论】:

“有价值”是什么意思?这是否意味着它被锁定/解锁?它是否指定了信号量的可能获取次数? 我相信是这个初始值:“sem_wait() 递减(锁定)sem 指向的信号量。如果信号量的值大于零,则递减继续,函数返回,立即。如果信号量当前的值为零,则调用将阻塞,直到可以执行递减(即信号量值上升到零以上)或信号处理程序中断调用。"【参考方案3】:

为了理解“价值”在 sem_init(sem_t *sem, int pshared, unsigned int value)

我认为我们需要将它与我们在代码中使用信号量的方式同步: 当我们想等待信号量时,我们调用sem_wait(&mutex),如果我们想通知让其他线程的sem_wait(&mutex)运行,我们需要调用sem_post(&mutex)。 但问题是如果没有任何其他线程首先调用 sem_post (&mutex)(在系统初始化中),sem_wait (&mutex) 应该做什么?它应该通过还是等待其他线程调用 sem_post(&mutex)? 答案在 sem_init() 中的“值”中。如果它为零,则意味着我们必须等待其他一些线程调用 sem_post() 一次,然后它才能通过。如果是一个,那么第一次调用 sem_wait() 将立即通过,但第二次 sem_wait() 将等待(如果在此期间没有调用 sem_post)。 所以 sem_init() 中的值表示我们可以执行多少次 sem_wait() 而无需真正等待而无需任何 sem_post()。 我们可以将 sem_wait() 视为: /死锁等待值被另一个线程更改为大于 0/

而(值

值--;

并将 sem_post() 视为:

值++;

【讨论】:

以上是关于python中函数参数列表中使用的 冒号是干啥用的的主要内容,如果未能解决你的问题,请参考以下文章

java中onCreate()方法是干啥用的

sem_init(...): value 参数是干啥用的?

PHP 的 serialize() 函数是干啥用的?

pycharm是干啥用的?

html中select标签的onChange属性是干啥用的?

python里的pypi是干啥用的