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中函数参数列表中使用的 冒号是干啥用的的主要内容,如果未能解决你的问题,请参考以下文章