我需要你的帮助,因为我不明白为什么可以使用if(Build.VERSION.SDK_INT >= 23) {
try {
CameraManager camManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
// Usually front camera is at 0 position.
if (camManager != null) {
mCameraId = camManager.getCameraIdList()[0];
camManager.setTorchMode(mCameraId, true);
theFlash.setImageResource(R.drawable.ic_highlight_black_24dp);
}
} catch (CameraAccessException e) {
}
} else {
try {
mCamera = Camera.open();
Camera.Parameters parameters = mCamera.getParameters();
List<String> flashModes = parameters.getSupportedFlashModes();
if (flashModes != null && flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)) {
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(parameters);
mCamera.startPreview();
theFlash.setImageResource(R.drawable.ic_highlight_black_24dp);
}
} catch (Exception e) {
}
}
方法作为参数使用join()
方法。
例如:
for
Python文档:
" ".join(str(x) for x in list)
返回一个字符串,它是iterable中字符串的串联。如果iterable中有任何非字符串值,包括bytes对象,则会引发
str.join(iterable)
。元素之间的分隔符是提供此方法的字符串。
可以请有人解释一下吗?
答案 0 :(得分:3)
声明(str(x) for x in list)
称为generator expression:
>>> (str(x) for x in [1,2,3])
<generator object <genexpr> at 0x7fc916f01d20>
这样做是创建一个可以迭代一次的对象,并产生一次创建一个元素。您可以像列表一样迭代它,如下所示:
>>> gen = (str(x) for x in [1,2,3])
>>> for s in gen:
... print s
...
1
2
3
生成器表达式是可迭代的,因此join函数所做的是迭代它并加入它的值。