[python]4.7.2. Keyword Arguments

函数可以被关键词参数调用,举例,下面的函数。

def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
print("-- This parrot wouldn't", action, end=' ')
print("if you put", voltage, "volts through it.")
print("-- Lovely plumage, the", type)
print("-- It's", state, "!")

接收一个必选参数(voltage)和三个可选参数(state,action,和type).这个函数可以被下面任何一种方式调用:

parrot(1000)   #1 positional argument
parrot(voltage=1000) # 1 keyword argument
parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments
parrot('a million', 'bereft of life', 'jump')# 3 positional arguments
parrot('a thousand', state='pushing up the daisies')# 1 positional, 1 keyword

但是下面的所有方式调用都是无效的:

parrot()                     # required argument missing
parrot(voltage=5.0, 'dead')  # non-keyword argument after a keyword argument
parrot(110, voltage=220)     # duplicate value for the same argument
parrot(actor='John Cleese')  # unknown keyword argument

在函数调用中,关键字的参数必须跟随在位置参数的后面。传递的所有关键字参数必须与函数接受的某个参数相匹配 (例如 actor 不是 parrot 函数的有效参数),它们的顺序并不重要。这也包括非可选参数(例如 parrot(voltage=1000) 也是有效的)。任何参数都不可以多次赋值。下面的示例由于这种限制将失败:

def function(a):
    pass
function(0, a=0)

Traceback (most recent call last):
File “”, line 1, in ?
TypeError: function() got multiple values for keyword argument ‘a’

在使用okhttp-4.7.2.jar进行https请求时,我们可以通过以下方法来跳过证书请求: 1. 创建自定义的TrustManager:首先,我们需要创建一个自定义的TrustManager来处理证书验证。这个TrustManager可以继承X509TrustManager,并实现其中的方法。 ```java class MyTrustManager implements X509TrustManager { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { // 不进行客户端验证 } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // 不进行服务器验证 } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } ``` 2. 创建自定义的SSLContext:然后,我们需要使用自定义的TrustManager创建一个SSLContext。 ```java SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, new TrustManager[]{new MyTrustManager()}, new SecureRandom()); ``` 3. 将自定义的SSLContext应用到OkHttpClient:接下来,我们需要通过OkHttpClient.Builder的sslSocketFactory()方法将自定义的SSLContext应用到OkHttpClient中。 ```java OkHttpClient client = new OkHttpClient.Builder() .sslSocketFactory(sslContext.getSocketFactory(), new MyTrustManager()) .build(); ``` 现在,我们可以使用这个配置好的OkHttpClient来发送https请求了。在这个过程中,我们会跳过对证书的验证。 需要注意的是,跳过证书验证存在安全风险,因为这意味着你的应用将接受任何证书,包括无效或伪造的证书。所以,在实际使用中,应该谨慎考虑是否需要跳过证书验证,以保证数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值